[英]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.