熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

ASP.NET MVC雕蟲小技 1-2[1]

2013-11-13 12:14:15  來源: .NET編程 

  看到AnyTao和TerryLee分享的關於ASPNET MVC使用和優化的技巧不免手癢也分享一下這一年多來ASPNET MVC開發的積累

  其中未必是一些高效的技巧但是的確是能解決問題也未必有什麼高深的原理只是我覺得值得分享

  Controller來控制HTML的Title

  我想大部分朋友都有在Controller裡面指定Html頁面Title的需求

  我習慣於先寫使用的代碼再去完善其實現而指定一個Title最方便的形式莫過於

: public ActionResult Index(int id) {  

:var article=DbGetArticle(id);//獲取數據庫裡的文章  

:Title=articleName;  

:return View();  

: } 

  當然這段代碼是不能執行的因為Controller並沒有內建的Title屬性不過沒關系我們可以自定義一個 

: abstract public class MyBaseController : Controller {  

:public string Title {  

:set {  

:ViewData[Page_Title] = value;  

:}  

:}  

: } 

  然後將我們的Controller換為這個MyBaseController之後在Master中寫ViewData[Page_Title]的輸出就好了

: <title><%=ViewData[Page_Title] %></title>  

  OK這個願意實現了

  當然做SEO的話Keyword和Description也可以這樣來搞

  ViewModel中傳遞Controller中定義的上下文

  老趙十分推ViewModel於是我也做了不少這方面的實踐發現的確不錯但是有個問題就是Controller中產生的上下文怎麼傳到View中去比如說自定義的用戶信息等一些非static的類型而我又不想到View中再實例化一遍

  解決方法ViewModel中另加一上下文屬性(在我和程序中這些上下文繼承於IContext接口而在Controller中它的屬性是CHContext)

: public class HomeIndexViewModel {  

:public IContext Context { get; set; }//這個屬性就是解決它的方法  

:public string Message { get; set; }  

: } 

  而我在Controller中  

: public ActionResult Index() {  

:HomeIndexViewModel model = new HomeIndexViewModel {  

:Context = CHContext//這裡傳遞  

:Message=Welcome to ASPNET MVC!  

:};  

:return View(model);  

: } 

[]  []  


From:http://tw.wingwit.com/Article/program/net/201311/15465.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.