2011-02-23 11 views
1

我已經創建了一個所有控制器都從其繼承的基礎控制器。目前,該控制器填充一些數據(這是我在最視圖使用)入ViewData - 集裝箱是這樣的:從ViewData的意見中我應該在哪裏編輯BaseModelView(在BaseController中)?

protected override void Initialize(System.Web.Routing.RequestContext rc) 
    { 
     base.Initialize(rc); 
     ViewData["cms_configuration"] = new CmsConfiguration(); 
     // etc. 
    } 

我不喜歡的事實,我需要閱讀(CAST) 。我想介紹一個BaseViewModel,所有ViewModel將從其中繼承,定義屬性而不是使用ViewData。但是,如何或在哪裏可以在BaseController中填充BaseViewModel?有沒有某種鉤子?還是我只需要在BaseController中定義一個函數,我在子控制器中調用?

E.g. (兒童控制器:

//{...} 
base.PopulateBaseView(MyView); 
return View(MyView); 

THX任何的竅門 sl3dg3

回答

1

你可以選擇性地使用ActionFilters做的東西是這樣的:

看看這篇文章:

http://www.asp.net/mvc/tutorials/understanding-action-filters-cs

它很好的解釋了ActionFilters。這樣你就可以將不同的填充邏輯分離成不同的過濾器,並且t只要你喜歡就可以打開和關閉它們。

+0

現在,我提交了我的問題行動過濾器也出現在我的腦海裏:) thx ... – sl3dg3 2011-02-23 13:02:00