在ASP MVC中填充2个或更多表

时间:2009-04-14 14:00:43

标签: c# javascript asp.net-mvc

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

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

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

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


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

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

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

假设你有一个View Model:

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" ) %>