簡體   English   中英

如何從過濾器或控制器為WebViewPage屬性分配值?

[英]How do I assign a value to a WebViewPage property from a filter or a controller?

閱讀完此問題及其答案后: 如何在不使用Controllers基類的情況下為所有View設置ViewBag屬性? 我創建了一個具有附加屬性的自定義WebViewPage:

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

public abstract class MyWebViewPage: MyWebViewPage<dynamic> { }

效果很好,現在可以在任何視圖中使用該屬性,並且可以正確鍵入該屬性了。 但是,現在我想從ActionFilter自動為該屬性分配值,如何從過濾器訪問“ MyWebViewPage”的實例以便分配給該屬性?

您可以將值分配給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";
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM