HtmlHelper和htmlAttributes帮助

时间:2011-06-28 07:53:47

标签: asp.net-mvc-3 html-helper html

我对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元素吗?

此致

3 个答案:

答案 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"
    }
})