EditorFor的Html(5)属性

7

我知道这个话题已经讨论了很多次。

我想使用

@Html.EditorFor(u => u.Password, new { required = "required" })

很遗憾,这在默认情况下是不可能的,因为EditorFor会覆盖Html属性。

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

有没有什么解决方案?


“overwrites the HTML attributes” 是什么意思? - Mike Perrenoud
1
@mosquito:你的问题是什么?如果你想要必填字段验证,你可以在模型中设置它。 - Sharun
2个回答

10

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

@Html.TextBox(
    "", 
    ViewData.TemplateInfo.FormattedModelValue,
    ViewData
)

然后:

@Html.EditorFor(u => u.Password, new { required = "required" })

将如预期一样工作。


那么OP所说的“覆盖HTML属性”是什么意思? - Mike Perrenoud
2
@MichaelPerrenoud,你为什么问我?去问OP啊。我猜他的意思是他传递给编辑器模板的 new { required = "required" } 参数没有任何效果,这很正常,因为内置在ASP.NET MVC中的默认编辑器模板不使用它们。这就是为什么我建议创建一个自定义的编辑器模板,以便使用这些参数。 - Darin Dimitrov

-1

不确定是否可行,但您可以将 [Required] 作为 Model 上的属性装饰器。


2
不,这对我想要的HTML属性没有影响。 - mosquito87

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接