制作全局ViewBag

时间:2014-04-30 06:40:56

标签: asp.net-mvc asp.net-mvc-3 session viewbag

是否有办法创建可在不同视图中使用的 Global ViewBag

在我的应用场景中, 1)我使用了用于_Layout.cshtml页面的 DropDown for Company

2)对于Dropdown,我通过在每个动作中ViewBag.Company传递Value。

我想要解决方案::

1)Global ViewBag.Company具有我们从每个操作传递的List。

2)然后就不需要在每个Action中创建ViewBag.Company。

这个问题可能有所不同。 但是我们怎样才能做到这一点?

2 个答案:

答案 0 :(得分:0)

在现实世界中,你的架构存在错误。

public class CustomNameAttribute : ActionFilterAttribute
{
        public void OnResultExecuting(ResultExecutingContext filterContext)
        {
            filterContext.Controller.ViewBag.Company = "Company";
        }
}

我认为您需要使用授权和使用属性用户

答案 1 :(得分:0)

添加一个全局过滤器,将公司添加到视图包中。

基本上创建一个actionfilter:

public class CompanyFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        filterContext.Controller.ViewBag.Company = "MyCompany";
    }
}

全球注册

public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new CompanyFilter()); // Add this line
        filters.Add(new HandleErrorAttribute());
    }
}