这是我根据当前文化格式化日期的模型。
我试图避免硬编码,例如 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 :(得分:-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