阅读完这个问题及其答案后:How to set ViewBag properties for all Views without using a base class for Controllers?我创建了一个带有额外属性的自定义WebViewPage:
api-test.mydomain.com
这很好用,当我在任何视图中使用它时,该属性现在可以访问并正确输入。但是现在我想从ActionFilter自动为这个属性赋值,如何访问" MyWebViewPage"的实例。从过滤器中分配给该属性?
答案 0 :(得分:1)
您可以将您的值分配给ViewData,并从您的财产的获取者处获取此数据。
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";
}
}
}