我试图更改由@ Html.HiddenFor创建的html输入的发出的名称。
我使用的代码:
@Html.HiddenFor(e => e.SomeProperty,new { @id = "some_property",@name = "some_property" }
现在这适用于id,但它不工作的名称。现在我真的不关心id现在,我需要改变名称,因为这是一个发布回到目标服务器。
在那儿
>我可以在我的模型中的SomeProperty应用的属性?
>一种方法在Html.HiddenFor中重写name属性?
或者我坚持做一个简单的< input ...>用手?
解决方法
您需要使用
Html.Hidden(或手写输出< input ...>),而不是Html.HiddenFor
@Html.Hidden("some_property",Model.SomeProperty,new { @id = "some_property" })
强类型辅助函数(例如名称以“For”结尾的函数,如HiddenFor)的目标是从提供的表达式中猜测输入名称。所以如果你想有一个“自定义”输入名称,你可以总是使用常规帮助像Html.Hidden,你可以显式地设置名称。
接受的answer from unjuken是错误的,因为它生成无效的HTML。
<input Name="some_property" name="SomeProperty" id="some_property" type="hidden" value="test" />
所以你将有Name =“some_property”AND name =“SomeProperty”,它是INVALID HTML,因为一个输入只能有一个名称属性! (虽然大多数浏览器碰巧采取第一个名称=“some_property”,不在乎第二个…)