基于这篇文章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";
}
}
Run Code Online (Sandbox Code Playgroud)
我无法在哪个名称空间中定义filterContext.Controller.ViewBag。在ASP.NET Core中仍然可用吗?
在 ASP.NET Core 中,可以定义一个不继承自 或 的控制器Controller类ControllerBase。因此,filterContext.Controller在您的示例中,是类型object而不是Controller. 但是,如果控制器实际上是 的实例Controller,您只需转换该Controller属性,然后ViewBag相应地使用即可。这是一个例子:
if (filterContext.Controller is Controller controller)
controller.ViewBag.Company = "MyCompany";
Run Code Online (Sandbox Code Playgroud)
这里使用的是C# 7 中引入的模式匹配is的示例。
| 归档时间: |
|
| 查看次数: |
227 次 |
| 最近记录: |