Controller与View数据传递(多表数据) ViewModel方式
来源:互联网 发布:excel数据左右颠倒 编辑:程序博客网 时间:2024/05/22 00:24
Controller与View数据传递(多表数据)
园子也是用mvc来写的,我们用园子的首页举个例子。
上图我只切了园子首页的一部分,如图所示,共分为4块内容。而这4块内容可能来自于不同的数据表,假设:第一、二块内容来自Blog表、第三、四块内容来自AD表。此时MVC一般有两种方式进行Control与View的交互。
1)ViewBag变量方式
使用4个ViewBag变量进行数据传递,Data1、Data2、Data3、Data4的数据直接从数据库里调。
Control中伪代码如下所示:
1 public ActionResult CnBlogIndex()2 {3 ViewBag.Data1 = Data1;4 ViewBag.Data2 = Data2;5 ViewBag.Data3 = Data3;6 ViewBag.Data4 = Data4;7 return View();8 }
View中伪代码如下所示:
1 //第一块内容 2 @foreach (Data1 data in (ViewBag.Data1 as IEnumerable<Data1>)) 3 { 4 <tr> 5 <td>@Html.DisplayFor(model => data.ID)</td> 6 </tr> 7 } 8 //第二块内容 9 @foreach (Data2 dat1 in (ViewBag.Data2 as IEnumerable<Data2>))10 {11 <tr>12 <td>@Html.DisplayFor(model => data.ID)</td>13 </tr>14 }15 //第三块内容16 @foreach (Data3 data in (ViewBag.Data3 as IEnumerable<Data3>))17 {18 <tr>19 <td>@Html.DisplayFor(model => data.ID)</td>20 </tr>21 }22 //第四块内容23 @foreach (Data4 data in (ViewBag.Data4 as IEnumerable<Data4>))24 {25 <tr>26 <td>@Html.DisplayFor(model => data.ID)</td>27 </tr>28 }
2)ViewModel方式(推荐)
什么是ViewModel?ViewModel就是针对视图做的Model,让Model更加适合于View。Data1、Data2、Data3、Data4的数据直接从数据库里取出,然后组装给ViewModel,ViewModel做为整个页面的数据载体进行数据传递:
ViewModel中的伪代码如下所示:
1 public class CnBlogIndex {2 List<Data> Data1 { get; set; }3 List<Data> Data2 { get; set; }4 List<Data> Data3 { get; set; }5 List<Data> Data4 { get; set; }6 }
Control中伪代码如下所示:
public ActionResult CnBlogIndex() { ViewModel.CnBlogIndex CnBlogIndex = new ViewModel.CnBlogIndex(); CnBlogIndex.Data1 = Data1; CnBlogIndex.Data2 = Data2; CnBlogIndex.Data3 = Data3; CnBlogIndex.Data4 = Data4; return View(CnBlogIndex); }
View中伪代码如下所示:
1 @model CnBlogIndex 2 @foreach (var info in Model.Data1) 3 { 4 <tr> 5 <td>info.**</td> 6 </tr> 7 } 8 @foreach (var info in Model.Data2) 9 {10 <tr>11 <td>info.**</td>12 </tr>13 }14 @foreach (var info in Model.Data3)15 {16 <tr>17 <td>info.**</td>18 </tr>19 }20 @foreach (var info in Model.Data4)21 {22 <tr>23 <td>info.**</td>24 </tr>25 }
两种传递数据的方式都可以完成我们的正常工作,但个人更推荐使用ViewModel将一个页面的信息进行聚合,这样虽然多了一些工作量,但可以使整体结构更清晰,同进也更易于维护。
0 0
- Controller与View数据传递(多表数据) ViewModel方式
- MVC数据从Controller传递到View之ViewModel
- MVC数据从Controller传递到View之ViewData & ViewModel
- Controller与View相互间传递数据
- MVC中Controller与View之间的数据传递
- 浅析ASP.NET MVC中Controller与View数据传递
- 浅析ASP.NET MVC中Controller与View数据传递
- 【ASP.NET MVC】View与Controller之间传递数据
- ASP.NET MVC中Controller与View之间的数据传递总结 (来自网络)
- ASP.NET MVC中从后台控制器(Controller)传递数据到前台页面视图(View)方式
- ASP.NET MVC中从前台页面视图(View)传递数据到后台控制器(Controller)方式
- ASP.NET MVC中从前台页面视图(View)传递数据到后台控制器(Controller)方式
- ASP.NET MVC2中Controller向View传递数据的三种方式
- ASP.NET MVC2中Controller向View传递数据的方式
- ASP.NET MVC2中Controller向View传递数据的三种方式
- ASP.NET MVC2中Controller向View传递数据的三种方式
- asp.net MVC前台View页面向后台Controller控制器传递数据的几种方式
- ASP.NET MVC中Controller与View之间的数据传递总结
- Lync 2013边缘服务器部署2—配置拓扑
- Lync 2013边缘服务器部署1—系统环境准备
- 反调试-通过手动添加TLS回调函数
- 投资什么,收益最高?
- js输出
- Controller与View数据传递(多表数据) ViewModel方式
- C++理解拷贝控制成员和构造函数
- Locale
- 使用组策略将用户文件夹重定向到D盘
- 程序人生之三:从新手到项目管理,五年程序人生路
- 历年软考真题大集合
- JSON.stringify(vResult)
- MDT客户端PXE不能启动
- 2015年河北省成人高校招生考试准考证打印及查询