如果我在模型类中有一个类型的属性,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”编辑方案。
- 3 回答
- 0 关注
- 613 浏览
添加回答
举报
0/150
提交
取消