Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.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
C# 从模型中添加数据属性_C#_.net_Asp.net Mvc 4 - Fatal编程技术网

C# 从模型中添加数据属性

C# 从模型中添加数据属性,c#,.net,asp.net-mvc-4,C#,.net,Asp.net Mvc 4,有没有办法在HTML标记上呈现html5数据属性?在这种情况下,我希望能够从模型类中为表单输入控件指定默认值: [AdditionalMetadata("data-default-value", "60")] 我使用AdditionalMetadata属性添加所需的数据属性和值,并使用TextBoxFor helper呈现输入标记。问题是我看不到数据属性-我是否需要执行其他操作来渲染它?从模型类中有更好的方法来实现这一点吗 标记据我所知,附加元数据不会在标记中呈现任何内容 您可以看到,其中显示

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

[AdditionalMetadata("data-default-value", "60")]
我使用AdditionalMetadata属性添加所需的数据属性和值,并使用TextBoxFor helper呈现输入标记。问题是我看不到数据属性-我是否需要执行其他操作来渲染它?从模型类中有更好的方法来实现这一点吗


标记

据我所知,附加元数据不会在标记中呈现任何内容


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

您需要以下内容,具体取决于您的模型外观(以及您访问属性的位置):

从模型元数据中获取目标属性,然后检索“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> htmlAttributes = new Dictionary<string, object>();
htmlAttributes.Add["data-default-value", ddv];
@Html.TextBoxFor(x=>x.MyProperty, htmlAttributes);
Dictionary htmlAttributes=newdictionary();
添加[“数据默认值”,ddv];
@TextBoxFor(x=>x.MyProperty,htmlAttributes);

这可能会有帮助:您所说的“我看不到数据属性”是什么意思?您到底在哪里看不到它?它没有通用的解决方案,例如,考虑自定义复杂模板。但是,您可能会考虑在项目中更改
对象
模板,例如它将查找其他属性以呈现简单编辑器或显示模板,或者简单地相应地更改文本框模板。感谢所有评论-这是我用于构建解决方案的答案。