Asp.net mvc 4 MVC视图显示仅需要日期时的时间

Asp.net mvc 4 MVC视图显示仅需要日期时的时间,asp.net-mvc-4,Asp.net Mvc 4,我有以下模型属性 [DataType(DataType.Date)] [DisplayFormat(DataFormatString = "{0:d/M/yyyy}", ApplyFormatInEditMode = true)] [Display(Name = "Date of Screening")] public DateTime? ScreeningDate { get; set; } 以及以下观点: @Html.TextBoxFor(model => model.Screeni

我有以下模型属性

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:d/M/yyyy}", ApplyFormatInEditMode = true)]
[Display(Name = "Date of Screening")]
public DateTime? ScreeningDate { get; set; }
以及以下观点:

@Html.TextBoxFor(model => model.ScreeningDate, new { @class="date maintainState" })
但我得到了文本框的标记:

 <input value="18/06/2013 12:00:00 AM" class="date maintainState" ... type="text"  />

我希望值为2013年6月18日

当我应用@Html.EditorFor时,它可以工作,但我需要控制class属性。我做错了什么?多谢各位

它在我apply@Html.EditorFor时起作用,但我需要控制 类属性。我做错了什么

没什么,事情就是这样。只有EditorFor和DisplayFor助手才尊重
[DisplayFormat]
属性

我知道您使用TextBoxFor是因为您希望将自定义类应用于该字段,而EditorFor不允许您这样做。但事实并非如此。EditorFor助手所做的只是呈现相应的编辑器模板。如果没有自定义模板,它将呈现默认模板

那又怎样

好的,您可以为DateTime类型编写一个自定义编辑器模板,该模板将按照您的需要运行。就像在
~/Views/Shared/EditorTemplates/DateTime.cshtml中那样:

@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, ViewData)
然后简单地说:

@Html.EditorFor(model => model.ScreeningDate, new { @class="date maintainState" })
现在用一颗子弹杀死了两只兔子:

  • 我们应用了所需的格式
  • 我们将所需的类应用于输入字段
如果您想杀死第三只兔子,并在表单提交回来时验证此自定义格式(因为请记住,默认模型绑定器不太关心此
[DisplayFormat]
属性),您可以编写一个自定义模型绑定器,它将尊重
[DisplayFormat]
属性,正如我在这里解释的那样: