2016-12-13 86 views
0

我们正在尝试使用.NET MVC和剃刀视图制作食物订单并提供Web应用程序。 但是我们在使用同一视图页面中的多个模型时遇到了问题。我们为这个问题找到了一些解决方案,但是它们在我们的实现中效果不佳。剃刀视图中的多个模型MVC

基本上,我在Register.cshtml中实现餐馆老板的注册系统。同样的观点,我也为普通用户进行了注册。如果选中“餐馆老板”复选框,用户必须输入他的餐厅信息并使用相同的控制器进行注册。所以如果复选框被选中,我也需要访问餐厅模型。

- 我们尝试过使用Tuple,但它并不适用于使用foreach和MVC绑定函数(如Html.DropDownList())。

我们也可以尝试在一个视图模型中合并两个模型,但是这看起来非常残酷,并且如果我们需要使用这种方法来处理每个双重模型组合,将会有太多的代码重复。

您能否帮助我们找到替代方法在1视图中使用2个模型?

+0

google关于mvc中的ViewModels –

+2

您的视图只能有一个模型。您应该创建一个复合视图模型。这不是蛮力。我所知道的唯一另外一种选择是对一个模型使用ViewBag元素,并将Model用于另一个模型。 –

+0

@Michael_B非常感谢你,如果不是蛮力的方法,我会用它:)) –

回答

0

简单地说,因为你指定的每个视图的顶部像这样@model WebApplication88.Models.YourModel您无法访问您的视图从多个模型数据。这个视图只能从这个YourModel引用数据。

但是,对于每个视图顶部可以引用的模型/列表,没有限制。因此,添加一个新类YourViewModel将您希望在视图中访问的所有必需数据填入其中,并将其传递给控制器​​的视图。

阅读这篇文章的更多信息Multiple Models in Single View in MVC

另请参阅this code project article on handling multiple models in a single view

0

首先,你不能有多个模型的视图,因为它是针对所有的MVC点。所以,你有两个选择:

  1. 视图模型:创建基于用户和餐馆模型的组合与所有属性一起视图模型。

  2. 将餐厅对象添加到您的用户模型并在用户为餐馆老板时填充,否则将其保留为空。