我有一个MVC视图,它使用Bootstrap样式。我想使用"@Html.EditorFor“而不是"@HtmlTextBoxFor”。为什么EditorFor不确定它需要成为一个文本框,然后得到相同的结果和TextBoxFor呢?
我提出这个问题的原因是,我的下一个字段将是一个日期,并希望使用EditorFor,而在DataType数据注释中,它将显示一个日期选择器。
下面是截图和查看代码,名字是EditorFor,而姓是(首选格式) TextBoxFor。

<div class="form-group">
@Html.LabelFor(m => m.Title, new { @class = "control-label" })
@Html.DropDownListFor(m => m.Title, new SelectList((IEnumerable)@ViewData["Titles"]), new { @class = "form-control" })
</div>
<div class="form-group">
@Html.LabelFor(m => m.Forenames, new { @class = "control-label" })
@Html.ValidationMessageFor(m => m.Forenames)
@Html.EditorFor(m => m.Forenames, new { @class = "form-control" })
</div>
<div class="form-group">
@Html.LabelFor(m => m.Surname, new { @class = "control-label" })
@Html.ValidationMessageFor(m => m.Surname)
@Html.TextBoxFor(m => m.Surname, new { @class = "form-control" })
</div>
<div class="form-group">
@Html.LabelFor(m => m.DateOfBirth, new { @class = "control-label" })
@Html.ValidationMessageFor(m => m.DateOfBirth)
@Html.EditorFor(m => m.DateOfBirth, new { @class = "form-control" })
</div>发布于 2015-01-15 12:21:35
我张贴这个答案,因为它完全适合我-所有感谢@StephenMuecke。虽然标记为MVC4 (我将移除标记),但我实际上使用了MVC5,因此可以传递html属性:
<div class="form-group">
@Html.LabelFor(m => m.Forenames, new { @class = "control-label" })
@Html.ValidationMessageFor(m => m.Forenames)
@Html.EditorFor(m => m.Forenames, new { @class = "form-control" })
</div>变成:
<div class="form-group">
@Html.LabelFor(m => m.Forenames, new { @class = "control-label" })
@Html.ValidationMessageFor(m => m.Forenames)
@Html.EditorFor(m => m.Forenames, new { htmlAttributes = new { @class = "form-control" } })
</div>发布于 2015-01-15 12:16:47
TextBoxFor接受属性参数,因为它总是创建<input>标记,因此它可以向它们添加属性。
但是,EditorFor可以呈现任何东西,从单个<input>标记到成熟的编辑器(通过声明自定义编辑器或将复杂类型传递给编辑器)。因此,在这种情况下接受属性参数是没有意义的。如果您查看MSDN中的此方法的重载列表,您将看到,如果传递一个对象,该对象将被视为“附加ViewData",但从未被视为”属性“。如果您查看TextBoxFor文档,您将看到有几个重载可以接受一个属性参数。
然而,MVC (5.1+)的最新版本确实接受EditorFor助手中的属性。请看这个那么,在MVC5.1中,Html.EditorFor比类支持更多吗?。
发布于 2015-04-16 19:56:26
Html.EditorFor(Function(m) m.Forenames, New With {
Key .htmlAttributes = New With { Key .[class] = "form-control" }
})FYI -根据Telerik代码转换器,这是VB.NET剃须刀版本的答案看起来(恶心)。但是,也许对外面的人有用。
(测试及工程)
https://stackoverflow.com/questions/27962760
复制相似问题