如何从过滤器或控制器为WebViewPage属性赋值?

时间:2015-10-29 21:58:11

标签: c# asp.net-mvc

阅读完这个问题及其答案后:How to set ViewBag properties for all Views without using a base class for Controllers?我创建了一个带有额外属性的自定义WebViewPage:

api-test.mydomain.com

这很好用,当我在任何视图中使用它时,该属性现在可以访问并正确输入。但是现在我想从ActionFilter自动为这个属性赋值,如何访问" MyWebViewPage"的实例。从过滤器中分配给该属性?

1 个答案:

答案 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";
        }
    }
}