我目前正在使用ASP.NET MVC 3 w / Razor弄湿我的脚,我对渲染HTML输入元素的最合适方式感到困惑。
正如我所看到的,有三种方法可以为Model的属性渲染这些元素:
这样做的推荐方法是什么?我有点担心EditorFor方法,因为我对渲染的HTML没有任何控制权,我认为MVC框架的一个邮件目标是避免WebForms的过度抽象。
你怎么看?这是什么最好的做法?谢谢!
答案 0 :(得分:5)
Html.EditorFor
是首选方式。您可以通过为给定类型编写自定义editor templates来控制HTML。 ModelMetadata允许您控制生成的输入字段的类型。如果您需要应用其他自定义属性,还可以编写custom metadata provider。
答案 1 :(得分:1)
您实际上可以控制EditorFor生成的HTML:you can create custom templates for each type。
当你想要做一些比文本框更复杂的事情时,EditorFor有一些明显的优势。我有一个案例,我想要一个“员工”财产的编辑。所以我的EditorFor模板创建了一个带有人员列表的下拉列表,选择了正确的列表,然后还添加了一个带有一些Javascript的文本框,用于按姓氏过滤列表(因为它相当冗长)。我可以手动完成,但为什么呢?我的视图只调用EditorFor(无论如何)并调用模板。因此代码非常干净。
所以我的建议是使用EditorFor,除非你有一个特殊的情况,这是不合理的。如果您决定稍后自定义编辑器,您只需更改类型的模板即可!一个很好的例子是约会。基本的EditorFor只是一个文本框,但是制作一个连接jQuery日期选择器的自定义模板非常容易。如果您使用的是EditorFor,那么您可以在以后执行此操作,而无需更改任何视图以利用它,如果您使用HTML文本框进行内联操作,则无法执行此操作。
答案 2 :(得分:0)
最好的方法是HTML.EditorFor
,因为您可以为给定类型创建编辑器模板,并且您的表单将在表单提交时自动绑定到您的模型视图对象。