C# MVC在PostActionResult中获取表单控件数据属性值

C# MVC在PostActionResult中获取表单控件数据属性值,c#,asp.net-mvc-4,C#,Asp.net Mvc 4,我正试图用mvc中的html数据属性重新创建我在winforms时代所做的事情 可以使用以下命令在表单控件上设置属性: txtTest.Attributes.Add("data-myattribute", "my value"); 然后,在表格发布后,使用以下方式将其重新阅读: txtTest.Attributes["data-myattribute"] 在mvc中添加属性轻而易举: @Html.TextBoxFor(m => m.FirstName, new { data_myatt

我正试图用mvc中的html数据属性重新创建我在winforms时代所做的事情

可以使用以下命令在表单控件上设置属性:

txtTest.Attributes.Add("data-myattribute", "my value");
然后,在表格发布后,使用以下方式将其重新阅读:

txtTest.Attributes["data-myattribute"]
在mvc中添加属性轻而易举:

@Html.TextBoxFor(m => m.FirstName, new { data_myattribute = "my value" })
只是不知道一旦表单发布后,如何在操作结果中读取它们

我一直在四处搜索,虽然我可以找到关于如何设置数据属性值并在javascript中读取它们的loadsa帖子,但我找不到任何可以告诉我如何在代码中获取它们的内容


有人知道这个神奇的答案吗

表单发布的数据中不包含数据属性,因此无法在控制器操作中读取它们。请尝试改用隐藏字段:

<input type="hidden" name="FirstNameAttribute" value="my value" />

该死!有一种感觉就是这样。。。不幸的是,我需要在select控件的每个列表元素上动态设置值。。。那就回到绘图板上去吧!谢谢你的回复;)您仍然可以使用这种方法—只需使用数据属性,并在每次选择选项时使用Javascript更新隐藏字段的值。这是真的。。。但是(抛出另一个拦截器!)我必须用js回退(有点像母马)对这个特定的站点进行编码。我真的不想进入价值管道的领域,例如“43 |我的价值”,因为它让人感觉有点不舒服,但这是我现在能想到的唯一解决方案…是的,这是一个艰难的问题-我唯一能建议的另一件事是在你的模型中有一个字典,其中键是选项值,值是属性。然后为每个选项创建一个隐藏字段,然后在回发时的dict中查找它。因此,对于每个隐藏字段,名称将是
MyDictionary[optionValue]
,值将是
myAttributeValue
。装订字典是相当简单的:有趣的想法——试一下,看看它是否有效
public string FirstNameAttribute { get; set; }