【问题标题】:mvc3 model bind to multiple lists of the same typemvc3 模型绑定到多个相同类型的列表
【发布时间】:2013-03-25 21:54:27
【问题描述】:

假设...

在剃刀视图中,我们有一个对象 A 的模型

@Model Object A

对象A是类A的一个实例,它有多个类B的实例,其中有一个类型为C的列表

Class A
public B Object1
public B Object2

Class B
public List<C> List1

对象 B 有一个 EditorView。对象 A 有一个更大的视图,其中每个对象 B 使用一个对象 B EditorView。

 @Model Object B

 ...do things with list in object B

因此,当视图呈现时,存在多个 B 类的编辑器视图。我可以在编辑器视图中使用什么代码将额外的 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 似乎可以将它们模型绑定到正确的父级,但它们不允许我向列表中添加额外的输入。

我的直觉方向——用反射(或不)做一些事情来得到主人的对象的名字,用这个来创建一个合适的名字?

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

【问题讨论】:

    标签: asp.net-mvc-3 list razor model-binding


    【解决方案1】:

    使用 Html.EditorFor 应该为您提供要使用的格式。它们需要是连续的,您需要计算现有项目 (-1) 以获得新的 [x] 索引以在名称中使用,或者使用正则表达式或字符串解析解析最后一个元素名称并提取其索引,假设您允许序列中有间隙,这意味着如果您想要间隙,您还需要一个自定义活页夹。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-07-01
        • 2012-08-14
        • 2011-10-11
        • 2016-08-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多