这是我的模型,用于根据当前区域性格式化日期。
我试图避免像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中显示基于当前区域性的短日期?
最佳答案
{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