Asp.net mvc 用于mvc的html编辑器的数据属性
编辑器不工作的数据属性Asp.net mvc 用于mvc的html编辑器的数据属性,asp.net-mvc,Asp.net Mvc,编辑器不工作的数据属性 @Html.EditorFor(model => model.SireTag, new { data_typeahead = "dsfsdfsd" }) 当我打开chrome浏览器时,我看不到文本框的任何数据属性。 我试过看眼镜,但没有发现任何有用的东西 Html.EditorFor的第二个对象参数不是用于Html属性,而是用于其他视图数据。EditorFor帮助程序不允许像更具体的帮助程序那样自定义HTML属性-他们从模型元数据中获取大部分设置(例如[attri
@Html.EditorFor(model => model.SireTag, new { data_typeahead = "dsfsdfsd" })
当我打开chrome浏览器时,我看不到文本框的任何数据属性。
我试过看眼镜,但没有发现任何有用的东西 Html.EditorFor的第二个
对象
参数不是用于Html属性,而是用于其他视图数据。EditorFor
帮助程序不允许像更具体的
帮助程序那样自定义HTML属性-他们从模型元数据中获取大部分设置(例如[attributes]
)
“修复”的最简单方法显然是删除编辑器:
@Html.TextBoxFor(model => model.SireTag, new { data_typeahead = "dsfsdfsd" })
或者,为属性编写自己的EditorTemplate。通过从ViewData[“data\u typeahead”]
(或“typeahead”)检索data\u typeahead
值,您可以使用(或简化)原始语法
更进一步、更高级的一步是,您可以使自己的属性
应用于您的模型属性+您自己的模型元数据提供程序
(或者-更简单-使用IMetadataAware
,更多信息如下)将其转换为EditorTemplate可以使用的元数据-这是为了从您的视图中完全删除关于数据-
属性的决定,将您的调用转换为:
@Html.EditorFor(model => model.SireTag)
。。。将您的模型转换为如下内容:
public class MyModel
{
[Typeahead("dsfsdfsd")]
public string SireTag { get; set; }
}
实际上,您可以使用EditorFor并发送额外的HTML属性。使用此选项并设置
additionalViewData
参数。它需要一个具有htmlAttributes
属性的对象:
@Html.EditorFor(
model=>model.SireTag,
新{
htmlAttributes=new{data_typeahead=“dsfsdfsd”}
}
)
这将产生如下结果:
public class MyModel
{
[Typeahead("dsfsdfsd")]
public string SireTag { get; set; }
}
这肯定是答案。虽然这个解决方案有效,@MarosDimitrio发布了一个超负荷的EditorFor
方法,该方法接受HTML属性。