ASP.NET MVC 利用UserControl讓一頁可以載入多個Model
- 2009-02-26
- 21918
- 0
看www.asp.net/mvc的範例看到的都是一個view中只有一個model不過現實世界可不是理想鄉,光是一個首頁就要連結多少的model,demo直覺的想到利用ViewUserControl來處理(MVC沒有Usercontrol)而今天的實做也很順利,所以就紀錄一下囉。
假設我們要使用List那在Controller內就會有這樣的code
public ActionResult Index() { MyDataContext myData = new MyDataContext(); return View(myData.Category); }
而View 只要選擇List就會自動幫我們建立好,所以就不在廢話了,而在該頁面上會繼承了一個IEnumerable的物件所以很自然的在這頁面中能用強型別的只有一個啦但是,demo在用過強型別以後就對它念念不忘,要我放棄它是不太可能了,既然一個view只能繼承一個IEnumerable那我就加上個ViewUsercontrol吧,為了要讓我們的ViewUsercontrol也有Model所以在原本的Index()就要多撈一個資料表如下
public ActionResult Index() { MyDataContext db = new MyDataContext(); ViewData["NewsModel"] = from p in db.News select p; return View(db.Category); }
然後直接利用這個Index()去產生一個ViewUserControl
這樣你在ViewUserControl內就一樣可以享受強型別了,至於要怎麼載入呢?你只要在需要的頁面上使用以下的方法就可以載入了。
<%Html.RenderPartial("UserIndex", ViewData["NewsModel"]); %>
以上的方法是demo覺得不需要改變寫法,而且可以讓精靈產生頁面的最好方案,或許還有更好的方法demo不知道,也請各位多多交流唷~~~
回應討論