asp.net mvc - 更改视图中的默认属性值

时间:2014-01-07 17:27:23

标签: jquery asp.net-mvc binding model

我有一个视图(实际上是一个编辑器模板),用于输入父对象的子集合中的每个项目。

伪代码:

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'属性的简洁方法,以便输出可以在回发时使用模型绑定?

1 个答案:

答案 0 :(得分:0)

请尝试以下方法覆盖名称属性:

@Html.HiddenFor(r => r.PropertyA, new { @Name="Parent[0].PropertyA"})