demoshop

demo, trying to be the best_

看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不知道,也請各位多多交流唷~~~

回應討論