而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