Controller与View数据传递 多Model传递
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将一个页面的信息进行聚合,这样虽然多了一些工作量,但可以使整体结构更清晰,同进也更易于维护。
3)使用Tuple类
Controller与View数据传递 多Model传递的更多相关文章
- ASP.NET controller TO view 数据传递
		https://stackify.com/viewbag/ In the case of ASP.NET MVC, you have three ways to pass data from the ... 
- ASP.NET MVC3中Controller与View之间的数据传递总结
		一. Controller向View传递数据 1. 使用ViewData传递数据 我们在Controller中定义如下: ViewData["Message_ViewData& ... 
- ASP.NET MVC3中Controller与View之间的数据传递
		在ASP.NET MVC中,经常会在Controller与View之间传递数据,因此,熟练.灵活的掌握这两层之间的数据传递方法就非常重要.本文从两个方面进行探讨: 一. Controller向Vie ... 
- Asp.net MVC中 Controller 与 View之间的数据传递
		在ASP.NET MVC中,经常会在Controller与View之间传递数据 1.Controller向View中传递数据 (1)使用ViewData["user"] (2)使用 ... 
- Controller与View之间的数据传递
		1)Controller向View传递数据ViewData["message"] = "Hello";//使用ViewData传递数据ViewBag.Time ... 
- ASP.NET MVC2中Controller向View传递数据的三种方式
		转自:http://www.cnblogs.com/zhuqil/archive/2010/08/03/Passing-Data-from-Controllers-to-View.html 在Asp. ... 
- 将Controller中的数据传递到View中显示
		如何将Controller 中的数据传送到View 步骤: (1)要有数据,如果要用到对象可以在Model 中定义对应的类 (2)要有装数据的容器: System.Text.StringBuilder ... 
- ASP.NET MVC 学习笔记-5.Controller与View的数据传递
		ViewData属性 ViewData属性是System.Web.Mvc.ControllerBase中的一个属性,它相当于一个数据字典.Controller中向该字典写入数据,ViewData[“K ... 
- Controller向View传递数据
		1. 使用ViewData传递数据 我们在Controller中定义如下: ViewData[“Message”] = “Hello word!”; 然后在View中读取Controlle ... 
随机推荐
- ImportError: libSM.so.6: cannot open shared object file: No such file or directory
			Solution sudo apt-get install libsm6 Similarly ImportError: libXrender.so.1: cannot open shared obje ... 
- Comparing deep learning frameworks: Tensorflow, CNTK, MXNet, & Caffe
			https://imaginghub.com/blog/10-a-comparison-of-four-deep-learning-frameworks-tensorflow-cntk-mxnet-a ... 
- C# 字符串转枚举类型
			Enum.Parse(typeof(枚举类型), 字符串类型) 如:在Unity中, Enum.Parse(typeof(SystemLanguage), "Chinese") 
- Eclipse取消或者关闭tomcat所有自动发布(部署)方法
			1.设置publishing为Never publish automaticallu 2.modules->edit->auto reloading enabled 3.Windows & ... 
- DBCP连接池工具类模板
			package ${enclosing_package}; import java.io.InputStream; import java.sql.Connection; import java.sq ... 
- orcale 之 集合操作
			集合操作就是将两个或者多个 sql 查询的结果合并成复合查询.常见的集合操作有UNION(并运算).UNION ALL.INTERSECT(交运算)和MINUS(差运算). UNION UNION 运 ... 
- Golang教程:变量
			声明单一变量 声明一个变量的语法为:var name type,例如 package main import "fmt" func main() { var age int // ... 
- NPM 与前端包管理
			我们很清楚,前端资源及其依赖管理一直是 npm 的重度使用场景,同时这也一直是 Node.js 普及的重要推动力.但这类应用场景到底有多重度?这是一个很难回答的问题.这份 “npm 最常下载的包的清单 ... 
- sublime text 3支持GBK编码
			1.安装Package Control: 按Ctrl+~打开命令行,然后复制粘贴下面这一行代码,回车确定: import urllib.request,os; pf = 'Package Contro ... 
- Android 屏蔽recent task 按钮
			Step 1 Add this permission to the manifest.xml file <uses-permission android:name="android.p ... 
