繁体   English   中英

剃刀视图MVC中的多个模型

[英]Multiple models in razor view MVC

我们正在尝试订购食品,并使用.NET MVC和razor view交付Web应用程序。 但是我们在同一视图页面中使用多个模型存在问题。 我们找到了解决此问题的一些解决方案,但它们与我们的实施效果不佳。

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

-我们尝试使用Tuple,但不适用于foreach和MVC绑定功能,例如Html.DropDownList()。

我们也可以尝试将两个模型合并到一个视图模型中,但是这样做看起来很蛮力,如果对每种我们需要的双重模型组合都使用这种方法,则会重复太多代码。

您可以帮助我们找到在1个视图中使用2个模型的替代方法吗?

首先,您不能查看多个模型,因为它违反了MVC的所有观点。 因此,您有两种选择:

  1. ViewModel:根据用户和餐厅模型以及所有属性的组合来创建视图模型。

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

简而言之,您无法在视图中访问来自多个模型的数据,因为在每个视图顶部都指定了类似@model WebApplication88.Models.YourModel内容。 该视图只能引用此YourModel数据。

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

阅读本文以了解更多信息。 在MVC中的“单一视图中的多个模型”

另请参阅此代码项目文章,以在单个视图中处理多个模型

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM