我正在研究MVC3 razor示例,并看到html.editor被利用,并在此论坛上也被问到了很多。为什么我不能使用html.textboxfor
和passwordfor
?感谢
答案 0 :(得分:9)
EditorFor的优势在于它会尝试渲染与数据类型相关联的编辑器。
例如:如果您设计自己的Editor Templates,则会根据属性的类型或UIHint
自动呈现它们有用的编辑器模板可能是在属性的类型为DateTime
时生成日期选择器的模板。
还有一些其他场景,其中'智能'EditorFor将为该属性生成“最佳”编辑器,例如,当使用<textarea>
<标记属性时呈现MultilineText
时/ p>
对于那些不需要“特殊编辑器”的情况,使用TextBoxFor和PasswordFor非常适合。当必须设置HtmlAttributes时,它甚至可以简化您的生活。
答案 1 :(得分:6)
参考Differences between Html.TextboxFor and Html.EditorFor in MVC and Razor清除对此的怀疑..
HtmlTextboxFor始终会创建
textbox (<input type="text" ...).
当EditorFor查看类型和元信息时,可以 渲染另一个控件或您提供的模板。
例如,对于DateTime属性,您可以创建一个模板 使用jQuery DatePicker。
如果您决定更改文本框的呈现方式,就像将它们包装在div中一样,您只需编写自定义编辑器模板(~/Views/Shared/EditorTemplates/string.cshtml)
,您的应用程序中的所有文本框都将自动受益于此更改而如果您有硬编码Html.TextBoxFor
,则必须在任何地方对其进行修改。