在MVC 2中将css类添加到Html.EditorFor

Ste*_*ven 39 c# asp.net-mvc

我正在尝试将css类添加到文本框中.这就是我的看法:

<%: Html.EditorFor(m => m.StartDate) %>
Run Code Online (Sandbox Code Playgroud)

我尝试按照此链接中的说明操作我的代码:

<%: Html.EditorFor(m => m.StartDate, new { @class: "datepicker" }) %>
Run Code Online (Sandbox Code Playgroud)

但我得到一个编译器错误说:

语法错误,','预期

我在这做错了什么?

Aar*_*els 78

有了MVC3,我一直在摇头,因为我无法让它发挥作用.我不想创建一个完整的EditorTemplate来添加一个类.

好了,而不是使用EditorFor,使用TextBoxFor,当然是有等号,如下所示:

@Html.TextBoxFor(m=> m.ZipCode, new { @class = "zip" })
Run Code Online (Sandbox Code Playgroud)

  • 当您需要在editmode中拥有数据时,这不起作用.即,否则用`[DisplayFormat(DataFormatString ="{0:dd-MMMM-yyyy}",ApplyFormatInEditMode = true)]`来装饰您的模型将不起作用. (28认同)

Cha*_*ell 24

我强烈建议使用编辑器模板.这绝对是为您的EditorFor设计样式的"正确"方式.

您可以通过两种不同的方式告诉模型属性使用编辑器模板.

第一个(最简单的)是为某种数据类型创建一个编辑器模板 - DateTime例如.
第二种方法是使用UIHint在DataAnnotations中以声明方式设置它.

编辑
我还想补充一点,您应该在输入字段中使用"日期"类型,以便即使禁用JavaScript,您的用户仍然可以看到本机日期选择器(仅在现代HTML5浏览器上有效)
<input id="meeting" type="date" value="2011-01-13"/>


ind*_*rad 5

我想快速而肮脏的方法是在jQuery中,是吗?

$(document).ready(function () {
    $('#StartDate').addClass('datepicker');
});
Run Code Online (Sandbox Code Playgroud)

  • 继续并禁用javascript,刷新此页面,然后尝试输入回复.你不能.期望您的用户启用javascript,或者像datepicker这样的某些东西不起作用是合理的.他们仍然可以在该场景中键入日期. (32认同)
  • 那么你的日期选择器可能无论如何都行不通.人们是否真的对Web应用程序进行编程,期望它们能够在禁用javascript的情况下工作? (23认同)
  • 那么如果用户没有现代浏览器你会怎么做? (3认同)
  • 认真的老兄?阅读[Progressive Enhancement](http://en.wikipedia.org/wiki/Progressive_enhancement).您构建您的网站,以便它适用于所有人,然后逐步增强它为拥有更好/更新浏览器的人. (2认同)