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)) 3 { 4 5 @Html.DisplayFor(model => data.ID) 6 7 } 8 //第二块内容 9 @foreach (Data2 dat1 in (ViewBag.Data2 as IEnumerable )) 10 { 11 12 @Html.DisplayFor(model => data.ID) 13 14 } 15 //第三块内容 16 @foreach (Data3 data in (ViewBag.Data3 as IEnumerable )) 17 { 18 19 @Html.DisplayFor(model => data.ID) 20 21 } 22 //第四块内容 23 @foreach (Data4 data in (ViewBag.Data4 as IEnumerable )) 24 { 25 26 @Html.DisplayFor(model => data.ID) 27 28 }
2)ViewModel方式(推荐)
什么是ViewModel?ViewModel就是针对视图做的Model,让Model更加适合于View。Data1、Data2、Data3、Data4的数据直接从数据库里取出,然后组装给ViewModel,ViewModel做为整个页面的数据载体进行数据传递:
ViewModel中的伪代码如下所示:
1 public class CnBlogIndex {2 List Data1 { get; set; } 3 List Data2 { get; set; } 4 List Data3 { get; set; } 5 List 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 5 info.** 6 7 } 8 @foreach (var info in Model.Data2) 9 { 10 11 info.** 12 13 } 14 @foreach (var info in Model.Data3) 15 { 16 17 info.** 18 19 } 20 @foreach (var info in Model.Data4) 21 { 22 23 info.** 24 25 }
两种传递数据的方式都可以完成我们的正常工作,但个人更推荐使用ViewModel将一个页面的信息进行聚合,这样虽然多了一些工作量,但可以使整体结构更清晰,同进也更易于维护。
3)使用Tuple类