Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 制作一个全局视图包_Asp.net Mvc_Asp.net Mvc 3_Session_Viewbag - Fatal编程技术网

Asp.net mvc 制作一个全局视图包

Asp.net mvc 制作一个全局视图包,asp.net-mvc,asp.net-mvc-3,session,viewbag,Asp.net Mvc,Asp.net Mvc 3,Session,Viewbag,是否有方法创建可在不同视图中使用的全局ViewBag 在我的应用程序场景中, 1我使用了公司的下拉列表,该下拉列表用于_Layout.cshtml页面 2对于该下拉列表,我通过在每个操作中创建ViewBag.Company来传递值 我想要解决方案:: 1一个全局视图包。公司有我们从每个操作传递的列表 2这样就不需要在每个操作中创建ViewBag.Company 这个问题可能有所不同。 但我们如何才能做到这一点呢?在现实世界中,您的体系结构存在错误 public class CustomNameA

是否有方法创建可在不同视图中使用的全局ViewBag

在我的应用程序场景中, 1我使用了公司的下拉列表,该下拉列表用于_Layout.cshtml页面

2对于该下拉列表,我通过在每个操作中创建ViewBag.Company来传递值

我想要解决方案::

1一个全局视图包。公司有我们从每个操作传递的列表

2这样就不需要在每个操作中创建ViewBag.Company

这个问题可能有所不同。
但我们如何才能做到这一点呢?

在现实世界中,您的体系结构存在错误

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

我认为您需要使用授权和使用属性用户添加一个全局过滤器,将公司添加到视图包中

基本上创建一个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());
    }
}

那你为什么要把它放进可视包里?可以从视图中调用任何公共静态方法。基本上,任何带有静态字段的类都可以充当ViewBag,如果你想让它假设你知道数据类型,我假设你知道这些数据类型,因为帮助者可以访问ViewBag,静态属性是一个糟糕的想法。你如何将一个值从布局页面传递给一个动作?如果你用的是帖子,你就看不到了。你能澄清一下吗?在每个操作中设置View.Company的位置是否有工作代码?