Model DisplayFormat's DataFormat Error in MVC3

本文关键字:DataFormat Error in MVC3 DisplayFormat Model | 更新日期: 2023-09-27 17:50:08

这是我基于当前文化设置日期格式的模型。

我试图避免硬编码,如DataFormatString = "{0:MM/dd/yyyy}"这样做的原因是获取当前文化模式

 [Required(ErrorMessage = "Date is required")]
 [DisplayFormat(ApplyFormatInEditMode = true,
               DataFormatString = System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern.ToString())]
[Display(Name = "Date", ResourceType = typeof(Resources.Global))]
public DateTime Date { get; set; }

and in .cshtml

@Html.TextBox("Date", 
    Model.Date.ToString("d", System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat), new { @class = "datePicker" })

问题:我得到一个错误

属性参数必须是一个常量表达式typeof属性参数类型

的表达式或数组创建表达式

是否有办法显示当前文化基于短日期在MVC文本框帮助?

Model DisplayFormat's DataFormat Error in MVC3

{0:d}为当前培养ShortDatePattern

代替

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern.ToString())]

你应该使用

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = {0:d})]

设置后,DataFormatString仅在EditorFor和DisplayFor中使用。所以你应该把视图改为

@Html.EditorFor(model => model.Date, new { @class = "datepicker" })

记住在视图的顶部添加@model YourModel