2015-10-29 107 views
0

閱讀這個問題和它的答案後:How to set ViewBag properties for all Views without using a base class for Controllers?我已經創建了一個額外的屬性自定義WebViewPage它:如何爲過濾器或控制器的WebViewPage屬性賦值?

public abstract class MyWebViewPage<TModel> : WebViewPage<TModel> 
{ 
    protected MyObject MyProperty { get; set; } 
} 

public abstract class MyWebViewPage: MyWebViewPage<dynamic> { } 

這一直運作良好,且其屬性是現在訪問並鍵入正確,當我在使用它我的任何看法。但是現在我想從ActionFilter自動分配一個值給這個屬性,我如何從過濾器訪問「MyWebViewPage」的實例才能分配給該屬性?

回答

1

您可以將您的值分配到ViewData中,並從屬性的getter中獲取此數據。

namespace NorthWindMVC.Views 
{ 
    public abstract class TestViewPage<TModel> : WebViewPage<TModel> 
    { 
     protected string TestProperty 
     { 
      get { return ViewData["TestProperty"] != null ? ViewData["TestProperty"].ToString() : String.Empty; } 
      set { ViewData["TestProperty"] = value; } 
     } 
    } 

    public abstract class TestViewPage : TestViewPage<dynamic> 
    { 
    } 
} 

而在你的過濾器,

namespace NorthWindMVC.Filters 
{ 
    public class TestActionFilter : ActionFilterAttribute 
    { 
     public override void OnActionExecuted(ActionExecutedContext filterContext) 
     { 
      filterContext.Controller.ViewData["TestProperty"] = "mahmut"; 
     } 
    } 
} 
相關問題