编辑器无法正常工作的数据属性。
@Html.EditorFor(model => model.SireTag, new { data_typeahead = "dsfsdfsd" })
当我打开我的Chrome浏览器时,我无法看到我的文本框的任何数据属性。 我试过护目镜,但没有找到任何有用的东西。
答案 0 :(得分:20)
实际上你可以使用EditorFor并发送其他HTML属性。使用此overload并设置additionalViewData
参数。它期望一个具有htmlAttributes
属性的对象:
@Html.EditorFor(
model => model.SireTag,
new {
htmlAttributes = new { data_typeahead = "dsfsdfsd" }
}
)
这将生成如下内容:
<input id="SireTag" name="SireTag" ... data-typeahead="dsfsdfsd">
答案 1 :(得分:13)
object
的第二个Html.EditorFor
参数不适用于HTML属性,而是适用于其他视图数据。 EditorFor
帮助程序不允许自定义HTML属性,例如:更具体的<input>
帮助程序 - 它们从模型元数据中获取大部分设置(例如[Attributes]
)。
“修复”的最简单方法显然是放弃EditorFor
:
@Html.TextBoxFor(model => model.SireTag, new { data_typeahead = "dsfsdfsd" })
或者,为属性编写自己的EditorTemplate。这可以允许您使用(或简化)原始语法,方法是从data_typeahead
(或“typeahead”)检索ViewData["data_typeahead"]
值。
更进一步,更高级,您可以将自己的Attribute
应用于您的模型属性+您自己的ModelMetadataProvider
(或 - 更简单 - 使用IMetadataAware
,更多内容如下)将其转换为EditorTemplate可以使用的元数据 - 这是为了完全从您的View中删除关于data-
属性的决定,将您的调用转换为:
@Html.EditorFor(model => model.SireTag)
......和你的模型如下:
public class MyModel
{
[Typeahead("dsfsdfsd")]
public string SireTag { get; set; }
}