2013-03-22 61 views
6

我知道这已经讨论了很多次。HTML(5)属性为EditorFor

我想使用

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

Unfortunatley作为EditorFor覆盖HTML属性,这是不是默认可能。

我不想使用TextBoxFor,因为我想根据DisplayFormat属性对值进行格式化。

有没有解决方案?

+0

“覆盖HTML属性”是什么意思? – 2013-03-22 09:49:41

+1

@mosquito:你的问题实际上是什么?如果你想要的字段验证,你可以在模型中进行设置。 – Sharun 2013-03-22 09:53:15

回答

10

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

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

然后:

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

会达到预期效果。

+0

那么OP表示“覆盖HTML属性”是什么意思? – 2013-03-22 09:58:34

+2

@MichaelPerrenoud,你为什么问我?询问OP。我想他的意思是,他传递给编辑器模板的'new {required =“required”}'参数没有任何影响,这是完全正常的,因为内置ASP.NET MVC的默认编辑器模板不使用他们。这就是为什么我建议创建一个使用这些参数的自定义编辑器模板。 – 2013-03-22 09:59:56

+0

完美,谢谢澄清! – 2013-03-22 10:02:27

-1

不确定这是一个选项,但您可以将[必需]作为模型上的属性装饰器。

+2

不,这对我想要的html属性没有影响。 – mosquito87 2013-03-23 13:28:01