而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了
[] []