Answers:
的优点EditorFor
是您的代码不绑定到<input type="text"
。所以,如果你决定要改变一些东西到你的文本框的呈现方式就像一个包裹它们的方面div
,你可以简单地写一个自定义编辑模板(~/Views/Shared/EditorTemplates/string.cshtml
),并在您的应用程序将自动从这一变化有利于所有的文本框,而如果你已经硬编码了Html.TextBoxFor
你将不得不在任何地方对其进行修改。您也可以使用数据注释来控制其呈现方式。
TextBoxFor:它将呈现类似于指定表达式的文本输入html元素。用简单的话来说,它将始终像输入文本框一样呈现,而不管与控件绑定的属性的数据类型如何。
EditorFor:此控件有点聪明。它根据属性的数据类型呈现HTML标记。例如,假设模型中有一个布尔属性。为了在视图中将此属性呈现为复选框,我们可以使用CheckBoxFor或EditorFor。两者将生成相同的标记。
使用EditorFor有什么好处?
众所周知,根据属性的数据类型,它会生成html标记。因此,假设明天如果我们更改模型中属性的数据类型,则无需更改视图中的任何内容。EditorFor控件将自动更改html标记。
这是先前注释中未提及的基本区别之一:
Readonly
属性适用于的文本框,不适用于EditorFor
。
@Html.TextBoxFor(model => model.DateSoldOn, new { @readonly = "readonly" })
上面的代码有效,在下面的代码中您无法控制readonly。
@Html.EditorFor(model => model.DateSoldOn, new { @readonly = "readonly" })
字符串数据类型的html输出也略有不同。
Html.EditorFor:
<input id="Contact_FirstName" class="text-box single-line" type="text" value="Greg" name="Contact.FirstName">
Html.TextBoxFor:
<input id="Contact_FirstName" type="text" value="Greg" name="Contact.FirstName">