我正在寻找一种在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>"
}
答案 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" ) %>