为了账号安全,请及时绑定邮箱和手机立即绑定

如何在ASP.NET MVC 3中以特定格式呈现DateTime?

如何在ASP.NET MVC 3中以特定格式呈现DateTime?

胡子哥哥 2019-11-26 15:31:29
如果我在模型类中有一个类型的属性,DateTime该如何以特定格式呈现它(例如,以ToLongDateString()返回格式)?我已经尝试过了...@Html.DisplayFor(modelItem => item.MyDateTime.ToLongDateString())...这将引发异常,因为表达式必须指向属性或字段。和这个...@{var val = item.MyDateTime.ToLongDateString();  Html.DisplayFor(modelItem => val);}...这不会引发异常,但是呈现的输出为空(尽管val包含预期值,如我在调试器中看到的)。提前感谢您的提示!编辑ToLongDateString仅是一个例子。我实际上想要使用的ToLongDateString是DateTimeand 的自定义扩展方法DateTime?:public static string FormatDateTimeHideMidNight(this DateTime dateTime){    if (dateTime.TimeOfDay == TimeSpan.Zero)        return dateTime.ToString("d");    else        return dateTime.ToString("g");}public static string FormatDateTimeHideMidNight(this DateTime? dateTime){    if (dateTime.HasValue)        return dateTime.Value.FormatDateTimeHideMidNight();    else        return "";}因此,我认为我无法在ViewModel属性上使用DisplayFormat属性和DataFormatString参数。
查看完整描述

3 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

如果所有DateTime类型的呈现方式都相同,则可以使用自定义DateTime显示模板。


在您的Views文件夹中,在控制器特定的views文件夹下或“ Shared”文件夹下创建一个名为“ DisplayTemplates”的文件夹(这些工作类似于局部文件)。


里面创建一个名为文件DateTime.cshtml是需要DateTime为@model您想如何使您的日期代码:


@model System.DateTime

@Model.ToLongDateString()

现在,您可以在视图中使用它,它应该可以工作:


@Html.DisplayFor(mod => mod.MyDateTime)

只要您遵循将其添加到“ DisplayTemplates”文件夹并命名该文件以匹配要显示的类型的约定,MVC就会自动使用该文件来显示您的值。这也适用于使用“ EditorTemplates”编辑方案。


查看完整回答
反对 回复 2019-11-26
  • 3 回答
  • 0 关注
  • 613 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信