我将Razor用作ASP.NET MVC 5中的视图引擎。我的日期来自UTC的后端服务。我想moment.js
在客户端上使用JavaScript格式化那些(例如)。我不想在服务器上这样做,因为我不想担心客户端在服务器端位于哪个时区(毕竟,服务器并不在乎)。
我认为从MVC,AJAX和Moment.js的Locale Date格式化来看,虽然我没有足够的信息可以解决这个问题,但是如果有必要的话,可以通过某种方式在服务器端执行此操作,这不是我想要的反正。
诸如使用自定义格式的ASP.NET MVC ViewModel映射之类的东西,或在ASP.NET MVC(3)中格式化模型属性的最佳位置是哪里?或如何在asp.net mvc 5中格式化日期不起作用,因为这是服务器端的(或者它以某种我不理解的方式?)
干净可靠地执行此操作的“最佳” /“正确”方法是什么?
编辑:明确地说,我对moment.js
这边一无所知。如果没有的话,我就不会命名。我要问的是ASP.NET MVC视图集成-如何以“正确”的方式完成此工作?
编辑2:我知道该怎么做脚本。我不知道是否有来自脚本变量的输出,如何将变量的内容转换为视图中显示给用户的信息?如果可以的话,我不需要执行诸如编辑HTML元素内容之类的操作;那根本不干净。也许我应该使它变得更加简单,以使其变得非常清晰:
想象一下Razor中的视图。该观点说:
@foreach (var item in Model) {
<!-- something to do javascript manipulation of item -->
<p>The result of manipulating @item.startDate is <!-- WHAT DO I DO HERE? --></p>
}
这些评论是我现在不知道该怎么做的。
您可以尝试一下(带剃须刀的JS):
var date = moment('@YourDateTime.ToString( "s", System.Globalization.CultureInfo.InvariantCulture )');
从momentjs
文档:
从字符串创建矩时,我们首先检查字符串是否与已知的ISO 8601格式匹配
(来源)
从.NET
文档:
“ s”标准格式说明符反映了已定义的标准(ISO 8601)
(来源)
溶液结合momentjs
与Razor
显示阵列DateTime
HTML / Razor:
@foreach (var item in Model) {
<p data-utcdate="@item.startDate.ToString("s", System.Globalization.CultureInfo.InvariantCulture)"></p>
}
JS(使用JQuery):
<script type="text/javascript">
$(function () {
$('[data-utcdate]').each(function () {
var d = moment($(this).attr('data-utcdate'));
$(this).html(d.format());
});
});
</script>
如果要以其他格式显示日期:http : //momentjs.com/docs/#/displaying/format/
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句