我有像这样一个模型元素:
[Required]
[Display(Name = "First name")]
[StringLength(50)]
public string FirstName { get; set; }
和我使用的是EditorFor泵出来的页面,如下所示:
@Html.EditorFor(x => x.FirstName )
我有很多页面上的这些元素,并想一个CSS类添加到基于模型是否有一个[必需]属性的输入域称为“必要”。
添加...
@Html.EditorFor(x => x.FirstName, new { @class = "Required" }) )
......似乎有点手册。 有没有一种方法,我可以动态地做到这一点?
提前致谢
如果你并不需要支持的老的浏览器,你也可以使用data-val-required
这已经是自动添加到域HTML属性。 在CSS这将是例如input[type="text"][data-val-required] { border-left: 2px solid blue; }
input[type="text"][data-val-required] { border-left: 2px solid blue; }
。
似乎有点手册。
而且最重要的不工作。 在的第二个参数EditorFor
助手没有做什么,你觉得这样做,违背了TextBoxFor
帮手。 你可以写一个自定义元数据提供商 ,这将允许你来装饰我们的视图模型属性与自定义属性,并指定类应用在编辑模板:
[Required]
[Display(Name = "First name")]
[StringLength(50)]
[HtmlProperties(CssClass = "Required")]
public string FirstName { get; set; }
我建议重写创建EditorTemplate:/Views/Shared/EditorTemplates/String.cshtml
把这个内容(对不起未经测试!):
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = "text-box single-line" + (ViewData.ModelMetadata.IsRequired ? " required" : "") })