我有一个视图(实际上是一个编辑器模板),用于输入父对象的子集合中的每个项目。
伪代码:
public class MyParent {
public int MyParentID;
public virtual ICollection<MyChild> Children;
}
我有一些动态调用控制器中的方法并将部分视图添加到DOM的jQuery。为了使模型绑定起作用,HTML需要如下所示:
<input name="Parent[0].PropertyA ... />
但控制器总是返回:
<input name="PropertyA ... />
...因此模型绑定无法将子元素绑定到子集合中。
我开始对返回的HTML进行一些javascript / jQuery操作,以手动插入“Parent [0]”。进入name属性。我仍然可以这样做,但它非常冗长。
我想到了另一个想法......视图允许你操纵HTML输出。例如,如果我把它放在我的视图中:
@Html.HiddenFor(r => r.PropertyA, new { random="myRandomValue"})
...它会添加一个随机属性。所以我试着这样做:
@Html.HiddenFor(r => r.PropertyA, new { name="Parent[0].PropertyA"})
但它不会更改name属性。似乎HiddenFor的这个重载只会添加其他属性,但不会更改默认属性。
我的问题:是否有一种更改'name'属性的简洁方法,以便输出可以在回发时使用模型绑定?
答案 0 :(得分:0)
请尝试以下方法覆盖名称属性:
@Html.HiddenFor(r => r.PropertyA, new { @Name="Parent[0].PropertyA"})