Sna*_*ake 56 asp.net-mvc asp.net-mvc-4 razor-2
我正在尝试更改由其创建的html输入的发出名称@Html.HiddenFor.
我正在使用的代码:
@Html.HiddenFor(e => e.SomeProperty, new { @id = "some_property", @name = "some_property" }
Run Code Online (Sandbox Code Playgroud)
现在这适用于id,但它不适用于名称.现在我真的不关心id现在,我需要name改变,因为那是被发布回目标服务器的那个.
在那儿
SomeProperty在我的模型中申请的财产?Html.HiddenFor覆盖name属性的方法?还是我坚持<input ...>用手做一个平原?
nem*_*esv 108
您需要使用Html.Hidden(或<input ...>手写)而不是Html.HiddenFor
@Html.Hidden("some_property", Model.SomeProperty, new { @id = "some_property" })
Run Code Online (Sandbox Code Playgroud)
强类型帮助程序的目标(例如名称结尾为"For"的HiddenFor那个)是从提供的表达式中猜出输入名称.因此,如果您想要一个"自定义"输入名称,您可以随时使用常规帮助程序,例如Html.Hidden您可以显式设置名称的位置.
unjuken的答案是错误的,因为它会生成无效的 HTML.
使用该解决方案生成两个 name属性:
<input Name="some_property" name="SomeProperty" id="some_property" type="hidden" value="test" />
Run Code Online (Sandbox Code Playgroud)
所以你会有Name="some_property" AND name="SomeProperty"这是无效的 HTML,因为输入只能有一个 name属性!(虽然大多数情人碰巧拿第一个Name="some_property"而不关心第二个...)
unj*_*ken 38
如果您使用:
@ Html.HiddenFor(e => e.SomeProperty,new {@id ="some_property",@ Name ="some_property"});
注意@Name中的大写"N".它会工作.
| 归档时间: |
|
| 查看次数: |
50550 次 |
| 最近记录: |