3

这是我根据当前文化格式化日期的模型。

我试图避免像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; }

在 .cshtml 中

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

问题:我收到一个错误

属性参数必须是属性参数类型的常量表达式、typeof 表达式或数组创建表达式

有没有办法在 MVC TextBox Helper 中显示基于当前文化的短日期?

4

1 回答 1

-1

{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在视图顶部添加

于 2013-01-02T00:46:22.160 回答