Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 用于mvc的html编辑器的数据属性_Asp.net Mvc - Fatal编程技术网

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属性。