我在格式化MVC 5 View时遇到了问题。 View是一个TextAreaFor的脚手架。我在我的ViewModel中为我的属性添加了DataFormatting,但它实际上并没有为我格式化。从我研究的所有内容中我正确地格式化了ViewModel,但我无法弄清楚为什么格式化实际上不起作用。
所以,我尝试使用@ Html.EditFor。这似乎使日期格式化工作,但它没有应用Bootstrap“表单控件”类。然后我尝试了@ Html.TextBoxFor,它像@Html.TextAreaFor一样响应,没有格式化,但确实应用了Bootstrap类。
我不知道使用哪一个以及我还需要做些什么来使我的View不仅格式化日期而且还应用Bootstrap CSS。
这是我的ViewModel属性。
[DisplayName("Call Date")]
[DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]
public DateTime? CallDate { get; set; }
这是脚手架创建的原始TextAreaFor。没有格式化,但Bootstap CSS有效。
<div class="form-group">
@Html.LabelFor(model => model.CallDate, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.TextAreaFor(model => model.CallDate, new { @class = "form-control datepicker" })
@Html.ValidationMessageFor(model => model.CallDate, "", new { @class = "text-danger" })
</div>
</div>
这是格式化日期的EditFor,但不适用Bootstrap CSS。
<div class="form-group">
@Html.LabelFor(model => model.CallDate, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.CallDate, new { @class = "form-control datepicker" })
@Html.ValidationMessageFor(model => model.CallDate, "", new { @class = "text-danger" })
</div>
</div>
这是像TextAreaFor一样响应的TextBoxFor。
<div class="form-group">
@Html.LabelFor(model => model.CallDate, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.TextBoxFor(model => model.CallDate, new { @class = "form-control datepicker" })
@Html.ValidationMessageFor(model => model.CallDate, "", new { @class = "text-danger" })
</div>
</div>
答案 0 :(得分:3)
要使用@Html.EditorFor()
添加html属性,您必须使用MVC-5.1 +,如果是,则使用
@Html.EditorFor(m => m.CallDate, new { htmlAttributes = new { @class="form-control datepicker" }})
如果您不使用MVC-5.1 +,并且想要生成文本框并格式化日期值,那么用法是(第二个参数是格式字符串)
@Html.TextBoxFor(m => m.CallDate, "{0:d}", new { @class = "form-control datepicker" })
请注意@Html.TextAreaFor()
为多行文字生成<textarea>
元素,不适合DateTime
属性。