MVC控制器传递多个实体类集合到视图的方案总结
MVC控制器向視圖傳遞數(shù)據(jù)包含多個(gè)實(shí)體類的解決方案有很多,這里主要針對(duì)視圖模型、動(dòng)態(tài)模型以及Tuple三種方法進(jìn)行一些總結(jié)與記錄。
基礎(chǔ)集合類:TableA
基礎(chǔ)集合類:TableB
namespace ViewModelStudy.Models {public class TableB{public int X { get; set; }public int Y { get; set; }public int Z { get; set; }} }構(gòu)建分別以TableA,TableB為基礎(chǔ)的集合
public List<TableA> tableA(){var table = new List<TableA>(){new TableA{A=1,B=2,C=3},new TableA{A=4,B=5,C=6}};return table;}public List<TableB> tableB(){var table = new List<TableB>(){new TableB{X=1,Y=2,Z=3},new TableB{X=4,Y=5,Z=6}};return table;}
方法一:新建ViewModel向視圖傳遞集合數(shù)據(jù)
?
public ActionResult ViewModel(){var ViewTable = new ViewTable(){TableA = tableA(),TableB = tableB()};return View(ViewTable);}?
@using ViewModelStudy.Models @model ViewTable @{Layout = null; }<!DOCTYPE html><html> <head><title>Index</title> </head> <body><div><table class="table1"><tbody>@foreach (var item in Model.TableA){<tr><td>@item.A</td><td>@item.B</td><td>@item.C</td></tr>}</tbody></table><table class="table2"><tbody>@foreach (var item in Model.TableB){<tr><td>@item.X</td><td>@item.Y</td><td>@item.Z</td></tr>}</tbody></table></div> </body> </html>
方法二:使用dynamic傳遞數(shù)據(jù)
?
@model dynamic @{Layout = null; } <!DOCTYPE html> <html> <head><title>Test</title> </head> <body><div><table class="table1"><tbody>@foreach (var item in Model.TableA){<tr><td>@item.A</td><td>@item.B</td><td>@item.C</td></tr>}</tbody></table><table class="table2"><tbody>@foreach (var item in Model.TableB){<tr><td>@item.X</td><td>@item.Y</td><td>@item.Z</td></tr>}</tbody></table></div> </body> </html>?
方法三:使用Tuple傳遞數(shù)據(jù)
?
?
@using ViewModelStudy.Models; @model Tuple<List<TableA>,List<TableB>> @{Layout = null; }<!DOCTYPE html><html> <head><title>Tuple</title> </head> <body><div><table class="table1"><tbody>@foreach (var item in Model.Item1){<tr><td>@item.A</td><td>@item.B</td><td>@item.C</td></tr>}</tbody></table><h1>xxxxxxxxxxxxxxxxxxx</h1><table class="table2"><tbody>@foreach (var item in Model.Item2){<tr><td>@item.X</td><td>@item.Y</td><td>@item.Z</td></tr>}</tbody></table></div> </body> </html>?
總結(jié)
使用新建視圖模型優(yōu)點(diǎn)在于對(duì)于較為復(fù)雜集合展示數(shù)據(jù)時(shí),使用強(qiáng)類型能夠較方便找到集合下面的實(shí)體屬性,而缺點(diǎn)在于需要新建實(shí)體類,可能有相當(dāng)一部分人都不喜歡新建實(shí)體類。
使用動(dòng)態(tài)類型和新疆視圖模型相比,優(yōu)勢(shì)在于不需要新建實(shí)體類,想怎么命名就怎么命名,缺點(diǎn)也是由此而來(lái),沒(méi)法動(dòng)態(tài)推斷出集合下的實(shí)體類屬性,可能對(duì)于集合屬性比較復(fù)雜的頁(yè)面來(lái)說(shuō)單單敲出這些屬性就是一個(gè)很大的問(wèn)題。
Tuple傳遞數(shù)據(jù)是我比較喜歡的一種方式,你只需要記住該集合中各部分?jǐn)?shù)據(jù)的序號(hào)即可,而且對(duì)于實(shí)體類可以動(dòng)態(tài)給出其包含的屬性。
?原文:http://www.cnblogs.com/fuxuyang/p/7988813.html
轉(zhuǎn)載于:https://www.cnblogs.com/hnsongbiao/p/8728263.html
總結(jié)
以上是生活随笔為你收集整理的MVC控制器传递多个实体类集合到视图的方案总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Linux 零拷贝 sendfile函数
- 下一篇: C++学习(16)