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

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

2022-06-13   來源: .NET編程 

  而View中

: <%@ Page Language=C# MasterPageFile=~/Views/Shared/SiteMaster  

: Inherits=SystemWebMvcViewPage<HomeIndexViewModel> %>  

: <asp:Content ID=indexTitle ContentPlaceHolderID=TitleContent runat=server>  

:Home Page  

: </asp:Content>  

: <asp:Content ID=indexContent ContentPlaceHolderID=MainContent runat=server>  

:<h><%= HtmlEncode(ModelMessage) %></h>  

: </asp:Content> 

  這樣我們就可以實現將Controller中產生的自定義上下文傳遞了不過每個ViewModel都初始化一個IContext未免太過頻繁也累人於是進一步改進我們利用作用在Controller上的Filter在Controller的基類我們自定義的 MyBaseController中寫如下Filter而實現這個功能則要所有的ViewModel繼承於一個類MyBaseViewModel

  MyBaseViewModel與Model

: public class MyBaseViewModel {  

:public IContext Context { get; set; }  

: }  

:    

: public class HomeIndexViewModel:MyBaseViewModel {  

:public string Message { get; set; }  

: }  

  Controller與Filter  

: abstract public class BaseController : Controller {  

:protected override void OnResultExecuting(ResultExecutingContext filterContext) {  

:var m = ViewDataModel as BaseViewModel;  

:if (m != null){  

:mContext = CHContext;//在這裡初始化  

:}  

:}  

: } 

  這回我們在Controller裡使用時就清爽了不用再傳遞CHContext了

[]  []  


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