写这文的缘由是一个决定走前端路的同学在写后端代码挣扎时想到给后来的同学减少些痛苦。此文偏重于分享当视图需要不止一张表的数据时,控制器得到的数据该如何传递到前端视图。
在.NET mvc的架构中,前端页面需要用到一张表或多张表的数据,这其中产生的操作是不同的。视图需要显示各种无法直接映射到域模型中定义的模型。——《ASP.NET MVC程序开发》。举个例子说,我项目中的教师个人中心页需要展示教师表的信息和教师详情表的信息,他们是存在于两个不同的数据模型中。且由于MVC机制的原因,view不能同时引用多个model,controller中的方法也不能同时传多个类到view中。
就我掌握的方法而言,有以下几种:为页面定制需要的viewmodel;利用数据库模型中的导航属性;在数据库层面创建好需要数据的视图;使用viewBag或viewData或TempData。
显然,提到的前三种都是使用强类型的方法,最后一种是弱类型的方法。接下来我们来一一了解这些方法的具体解决过程。