MVC3 - 基于模型的属性添加CSS类(mvc3 - adding CSS class base

2019-09-29 02:57发布

我有像这样一个模型元素:

[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" }) )

......似乎有点手册。 有没有一种方法,我可以动态地做到这一点?

提前致谢

Answer 1:

如果你并不需要支持的老的浏览器,你也可以使用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; }



Answer 2:

似乎有点手册。

而且最重要的不工作。 在的第二个参数EditorFor助手没有做什么,你觉得这样做,违背了TextBoxFor帮手。 你可以写一个自定义元数据提供商 ,这将允许你来装饰我们的视图模型属性与自定义属性,并指定类应用在编辑模板:

[Required]
[Display(Name = "First name")]
[StringLength(50)]
[HtmlProperties(CssClass = "Required")]
public string FirstName { get; set; }


Answer 3:

我建议重写创建EditorTemplate:/Views/Shared/EditorTemplates/String.cshtml

把这个内容(对不起未经测试!):

@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = "text-box single-line" + (ViewData.ModelMetadata.IsRequired ? " required" : "") })


文章来源: mvc3 - adding CSS class based on model attributes