2009-04-14 40 views
1

我正在寻找一种在MVC中填充多个表格的方法,因为该方法只允许我返回一个ModelView,或者我不知道如何返回更多。我是否必须在控制器中构建表并存储到ViewData中并在页面中显示viewData?在ASP中填充2个或更多表格MVC

编辑:对不起,我想我没有表达这个想法。重点是我想在页面中填充2个或更多数据表。

例如,如果我有一个客户,并且该客户有5个联系人和5个地址,我想显示客户信息和2个包含联系人和地址的表格。

for each p in modelview 
{ 
"<td>" + p.Name + "</td>" 
} 


for each p2 in modelview2 
{ 
"<td>" + p2.Product + "</td>" 
} 

回答

0

您可以返回多个模型,但在绑定控制器参数时,它需要复合模型用于视图和使用前缀。

假设你有一个视图模型是:

public class VM 
{ 
    public FooClass Foo { get; set; } 
    public BarClass Bar { get; set; } 
} 

然后在你的控制器,你将有

public ActionResult MyAction([Bind(Prefix="Foo")]FooClass foo, 
          [Bind(Prefix="Bar")]BarClass bar) 
{ 
    ... 
} 

而且在你看来,你可以使用:

<%= Html.TextBox("Foo.Value") %> 
<%= Html.TextBox("Bar.Name") %> 
2

ViewData是一个词典;您可以存储多个项目在那里,只需通过:

ViewData["foo"] -= ... 
ViewData["bar"] -= ... 

然后,您可以在视图中获得这些(另发)。另一种方法是声明封装这两种属性的类型,并将该类型的实例用作模型(以及类型化视图)。就我个人而言,我更喜欢简单的键/演员方法。

+0

对于简单地将数据传递给视图(列表/显示),我同意。但是,从视图获取数据(新/更新)时,这种方法并不总是最简单的。特别是,如果您已经有复合模型,请说明具有相关联系人的用户。 – tvanfosson 2009-04-14 14:09:48