基于这篇文章制作一个全局ViewBag https://stackoverflow.com/questions/23381295/make-a-global-viewbag,我正在尝试在 ASP.NET Core 2.2 中实现以下内容。我意识到原来的帖子是针对 MVC 3 的。
public class CompanyFilter : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.Controller.ViewBag.Company = "MyCompany";
}
}
我无法找到在哪个命名空间中定义filterContext.Controller.ViewBag。这在 ASP.NET Core 中仍然可用吗?
在 ASP.NET Core 中,可以定义一个不继承自任何一个的控制器类Controller
or ControllerBase
。因为这,filterContext.Controller
在你的例子中是类型object
代替Controller
。但是,如果控制器实际上是一个实例Controller
,你可以直接投射Controller
属性然后使用ViewBag
因此。这是一个例子:
if (filterContext.Controller is Controller controller)
controller.ViewBag.Company = "MyCompany";
指某东西的用途is
这是一个例子模式匹配 https://learn.microsoft.com/en-us/dotnet/csharp/pattern-matching#the-is-type-pattern-expression这是 C# 7 中引入的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)