Html.TextBoxFor格式化还是Html.EditorFor htmlAttributes?

lah*_*rah 20 c# asp.net-mvc asp.net-mvc-3

我有点难过,因为我想格式化值并为css类添加一个html属性.

如果我使用@Html.TextBoxFor(m => m.DateModified) - 我可以添加html属性,但格式不能通过成员上的DisplayFormat属性工作.

如果我使用 @Html.EditorFor(m => m.DateModified) - 格式化工作,但我不能添加HTML属性

如果我使用@Html.TextBox("DateModified", Model.DateModified, ...) - 当表单处于添加模式时,当Model为null时,我得到null引用异常

实现这一目标的最佳方法是什么?

lah*_*rah 17

我最终通过为我的日期选择器创建自定义编辑器模板来解决这个问题:

共享/ EditorTemplates/DateTime.cshtml

 @model System.DateTime? 
 @Html.TextBox("", Model.HasValue ? Model.Value.ToString("dd/MM/yyyy") : string.Empty, new { @class = "date-picker" })
Run Code Online (Sandbox Code Playgroud)

然后在我的原始页面继续使用

@Html.EditorFor(m => m.DateModified)
Run Code Online (Sandbox Code Playgroud)

  • 尼斯.对我很有帮助 - 我对此感到沮丧. (2认同)

cto*_*orx 10

你可以...

@Html.TextBoxFor(m => m.DateModified, new { Value = Model.DateModified.ToString("MM-dd-yyyy"), @class = "superCoolClassName"})
Run Code Online (Sandbox Code Playgroud)

  • 这次真是万分感谢.我发现匿名类型"value"的第一个属性实际上应该以大写V开头(即"Value"),否则它没有影响. (7认同)