2013-04-04 82 views
0

假设的多个列表...MVC3模型绑定同类型

我们有对象的模型的

@Model Object A 

对象A是A类的一个实例,其中有B类的多个实例,其具有C型

Class A 
public B Object1 
public B Object2 

Class B 
public List<C> List1 

没有为对象B.一个EditorView没有为其中每个对象B使用一个对象B EditorView对象A较大视图的列表。

@Model Object B 

...do things with list in object B 

所以,当视图呈现时,则不存在类B的多个编辑器视图。我可以在editorview中使用哪些代码将附加的C添加到B Object1的列表List1中,而不影响B Object2中的列表List1。

@Model Object B 

... would like to add to this list and have it post back, and only effect the b it in. I don't know how to reference this object's master to add to this list exculsively 

我看着http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx几次。这就像在同一个页面上有多个...

<input type="text" name="[0].Title" value="Curious George" /> 
<input type="text" name="[0].Author" value="H.A. Rey" /> 
<input type="text" name="[0].DatePublished" value="2/23/1973" /> 

<input type="text" name="[0].Title" value="Curious George" /> 
<input type="text" name="[0].Author" value="H.A. Rey" /> 
<input type="text" name="[0].DatePublished" value="2/23/1973" /> 

,并要他们回发到上回发其正确的主人。那就是我想要做的。我想动态添加

<input type="text" name="...." value=""/> 

但我遇到了问题,我在名称位置上做了什么以使其发生。执行@ Html.EditorFor和@ Html.HiddenFor似乎起作用,因为它们绑定到了正确的父对象,但他们不允许我将其他输入添加到列表中。

我的直觉方向 - 用反射(或不)来做一些事情来获取主人的名字,用它来创建一个合适的名字?

想法或代码示例请。谢谢。

回答

2

使用Html.EditorFor应该给你使用的格式。它们需要是连续的,您需要对现有项目(-1)进行计数以获取新的[x]索引以在名称中使用,或者使用正则表达式或字符串解析来解析最后的元素名称并提取其索引,假设您允许序列中存在空白,这意味着如果您需要空白,您还需要自定义联编程序。

0

好的,解决方案可能是使用编辑器的不同变量来获取父变量的通用名称,并使用jquery/js来解析此名称,然后动态地将输入type = file用基于此名称。