我有一个类,其密码注释为DataType.Password,如下所示:
[DataType(DataType.Password)]
[Required]
public string Password { get; set; }
当我使用EditorFor在视图上显示此字段时,我需要在其上应用CSS类。
我是按照以下方式做的:
@Html.EditorFor(model => model.Password, "loginTextBox", new { @class = "form-control ", placeholder = "" })
由于某些原因,没有为EditorFor()使用Html属性的内置方式(就像我在这里可以读到的那样:Html attributes for EditorFor() in ASP.NET MVC),所以我需要创建一个简单的EditorTemplate来允许它像这样:
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = ViewData["class"], id = ViewData["id"], placeholder = ViewData["placeholder"]})
问题在于,此编辑器在不是DataType.Password的其他属性之间共享。如果属性注释为DataType.Password,我想使用
@ Html.Password(...)
否则
@ Html.TextBox(...)
我能想到实现这一目标的唯一方法是检查DataType,但我不知道如何做到这一点。
有关如何检查DataType甚至是更好的方法的想法吗?
答案 0 :(得分:1)
现在,ASP.Net MVC 5.1支持EditorFor的htmlAttributes
。只需将其作为匿名对象传递。
@Html.EditorFor(model => model.Password, "loginTextBox",
new { htmlAttributes = new { @class = "form-control ", placeholder = ""})