给定一个特定DateTime值,我如何显示相对时间,如:
我正在尝试按照ScottGu的Razor帖子中的说明创建一个声明性的HTML Helper ,但我没有太多运气.我尝试在Views/Helpers中放置一个带有DateTimeHelper的Helpers.cshtml文件,但是它不会把它拿起来,所以我按照MVC 3 Beta帖子尝试了App_Code .现在它捡起来了,但是当我尝试在这样的文件中使用它时:
@DateTimeHelper(DateTime.Now)
编译器抱怨DateTimeHelper不存在.
一些奇怪的事情:如果我将文件重命名为DateTime.cshtml,我会得到一个不同的错误,关于我帮助器中的特定代码.
为了完整起见,这里是帮助者的代码:
@helper DateTimeHelper(DateTime t, bool longDate = true, bool showTime = true, bool longTime = true) {
<time datetime='@t.ToUniversalTime()'>
@if(longDate) {
if(showTime) {
if(longTime) {
@t.ToLongDateString() @t.ToLongTimeString();
} else {
@t.ToLongDateString() @t.ToShortTimeString();
}
} else {
@t.ToLongDateString()
}
} else {
if(showTime) {
if(longTime) {
@t.ToShortDateString() @t.ToLongTimeString();
} else {
@t.ToShortDateString() @t.ToShortTimeString();
}
} else {
@t.ToShortDateString()
}
}
</time>
}
Run Code Online (Sandbox Code Playgroud)
帮助程序在某个视图中使用,如下所示:
@model dynamic
<div>
<p> The …Run Code Online (Sandbox Code Playgroud) 我使用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>
}
Run Code Online (Sandbox Code Playgroud)
评论是我现在不知道如何干净利落的.