MVC多个数据模型传递给一个视图[重复]
Posted
技术标签:
【中文标题】MVC多个数据模型传递给一个视图[重复]【英文标题】:MVC multiple data-models passed to a view [duplicate] 【发布时间】:2011-10-04 20:20:26 【问题描述】:可能重复:ASP.NET MVC - View with multiple models
使用 ASP.NET MVC 3.0,我如何将多个数据模型从我的控制器传递到我的视图?我希望有一个优雅的解决方案...谢谢!
顺便说一句 - 我可以提供代码示例,但我认为这是通用的,不足以保证它
【问题讨论】:
【参考方案1】:不幸的是,没有一种真正优雅的方式来做到这一点。我首选的方法是封装这两个对象并将其发送到视图。
public class City
public Mall TheMall;
public School TheSchool;
然后您的视图将被强类型化为 City,您将使用 Model.TheMall.Property
和 Model.TheSchool.Property
来访问您需要的内容。
另一种方法是使用 ViewData 包。你可以做的是这样填充它:
ViewData["City"] = "Toronto"; //random string
ViewData["Mall"] = new TheMall(...);
return View(MyViewName);
然后在您看来,您将可以使用您在控制器中分配的键(在本例中为“City”、“Mall”)访问这些。
希望有帮助!
【讨论】:
第一种方法通常被称为 ViewModel,通常人们会有一个 ViewModels 文件夹来保存这些,与 Models 文件夹分开。我个人称其为 ModelProjections,因为它本质上是一个抽象层,允许您为您的 UI 编写模型的投影。以上是关于MVC多个数据模型传递给一个视图[重复]的主要内容,如果未能解决你的问题,请参考以下文章
将 knockoutjs 视图模型传递给多个 ajax 调用