从模型中添加数据属性

时间:2014-01-06 16:12:22

标签: c# .net asp.net-mvc-4

有没有办法在HTML标记上呈现html5数据属性?在这种情况下,我希望能够从Model类中指定表单输入控件的默认值:

[AdditionalMetadata("data-default-value", "60")]

我正在使用AdditionalMetadata属性添加我想要的数据属性和值,并使用TextBoxFor帮助器来呈现输入标记。问题是我没有看到数据属性 - 我是否需要做其他事情才能呈现它?有没有更好的方法从Model类中执行此操作?

马克

2 个答案:

答案 0 :(得分:0)

据我所知,AdditionalMetadata不会在您的标记中呈现任何内容。

您可以看到this article,其中显示了如何从属性中获取值,但是您应该手动将数据属性添加到输入中。

答案 1 :(得分:0)

您需要具备以下内容,具体取决于您的模型(以及您访问您的财产的位置):

从模型元数据中获取目标属性,然后检索“data-”属性值:

string ddv = ViewData.ModelMetadata.Properties.Where(x => x.PropertyName == "myProperty)
             .FirstOrDefault().AdditionalValues["data-default-value"].ToString();

渲染属性时使用此信息:

@Html.TextBoxFor(x=>x.MyProperty, new { data-default-value = ddv })

编辑:由于C#在使用减号(“ - ”)时很敏感,因此最好的选择是在提供此类HTML属性时构建Dictionary<string, object>

Dictionary<string, object> htmlAttributes = new Dictionary<string, object>();
htmlAttributes.Add["data-default-value", ddv];
@Html.TextBoxFor(x=>x.MyProperty, htmlAttributes);