我对MVC 3很新,并且正在使用Razor视图引擎。我正在使用Html.Hidden扩展方法输出hidden类型的输入元素。我还想做的是添加一个自定义属性来保存动态值。我在HTML5中的印象是,我们可以编写以'data-'为前缀的自定义html元素属性。我正在尝试做类似下面的事情;
@Html.Hidden("hdnID", mymodel.somevalue, new { data-uniqueid = mymodel.somevalue })
希望渲染;
<input type="hidden" value="mymodel.somevalue" data-uniqueid="mymodel.somevalue"/>
htmlAttributes部分( new {data-uniqueid = mymodel.somevalue} )发出错误,
“无效的匿名类型成员声明符。必须使用成员分配,简单名称或成员访问声明匿名类型成员”。
我可以使用HtmlHelper类将用户定义的属性添加到html元素吗?
此致
答案 0 :(得分:20)
使用:
@Html.Hidden("hdnID", mymodel.somevalue, new { @data_uniqueid = mymodel.somevalue })
下划线会自动转换为破折号。
答案 1 :(得分:0)
卫生署!我很傻。您不能在匿名类型声明中使用“ - ”:
data-uniqueid = ...
一定是
datauniqueid = ....
在这种情况下,最好的方法是手写出隐藏的输入:
<input type="hidden" value="@mymodel.somevalue" data-uniqueid="@mymodel.somevalue"/>
答案 2 :(得分:0)
您可以通过构建字典对象来绕过成员验证。如下:
@Html.TextBoxFor(model => model.Phone, new Dictionary<string, object>
{
{
"data-call-results-target", "#search-results-area"
},
{
"data-action-path", "/Controler/Method"
}
})