EditorFor()中的Html属性或编辑器模板中的检查数据类型

时间:2014-02-25 14:28:24

标签: c# html asp.net asp.net-mvc

我有一个类,其密码注释为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甚至是更好的方法的想法吗?

1 个答案:

答案 0 :(得分:1)

现在,ASP.Net MVC 5.1支持EditorFor的htmlAttributes。只需将其作为匿名对象传递。

ASP.Net MVC 5.1 Release Notes

@Html.EditorFor(model => model.Password, "loginTextBox",
 new { htmlAttributes = new { @class = "form-control ", placeholder = ""})