EditorFor的Html(5)属性

mos*_*o87 6 asp.net-mvc html5 razor asp.net-mvc-3

我知道这已经讨论过很多次了.

我想用

@Html.EditorFor(u => u.Password, new { required = "required" })
Run Code Online (Sandbox Code Playgroud)

默认情况下,这是不可能的,因为EditorFor会覆盖Html属性.

我不想使用TextBoxFor,因为我希望根据DisplayFormat属性格式化值.

这有什么解决方案吗?

Dar*_*rov 10

您可以为字符串type(~/Views/Shared/EditorTemplates/string.cshtml)编写自定义编辑器模板:

@Html.TextBox(
    "", 
    ViewData.TemplateInfo.FormattedModelValue,
    ViewData
)
Run Code Online (Sandbox Code Playgroud)

然后:

@Html.EditorFor(u => u.Password, new { required = "required" })
Run Code Online (Sandbox Code Playgroud)

将按预期工作.

  • @MichaelPerrenoud,你为什么问我?问OP.我想他的意思是他传递给编辑器模板的`new {required ="required"}参数没有任何效果,这是完全正常的,因为内置ASP.NET MVC的默认编辑器模板不使用他们.这就是为什么我建议创建一个使用这些参数的自定义编辑器模板. (2认同)