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