ViewBag внутри фильтров ASP.NET Core - PullRequest
0 голосов
/ 21 декабря 2018

Основываясь на этом посте Создайте глобальный 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?

1 Ответ

0 голосов
/ 21 декабря 2018

В ASP.NET Core можно определить класс контроллера, который не наследуется ни от Controller, ни от ControllerBase.Из-за этого filterContext.Controller в вашем примере имеет тип object вместо Controller.Однако, если контроллер на самом деле является экземпляром Controller, вы можете просто привести свойство Controller и затем использовать ViewBag соответственно.Вот пример:

if (filterContext.Controller is Controller controller)
    controller.ViewBag.Company = "MyCompany";

Использование is здесь является примером сопоставления с шаблоном , который был представлен в C # 7.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...