ActionExecutingContext.ActionParameters NULL для RedirectToAction MVC 5 - T4MVC - PullRequest
0 голосов
/ 29 ноября 2018

У меня перенаправление типа:

return RedirectToAction(MVC.Area.Controller.Index(institutionId));

Это перенаправляет на контроллер, который наследуется от другого контроллера, у которого фильтр действий определен следующим образом:

protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
    var institutionId = filterContext.ActionParameters["institutionId"];

    var institution = InstitutionRepository.GetById((int)institutionId);

    ...other code
}

ActionExecutingContext.ActionParameters.Содержит идентификатор института, но значение всегда NULL.Я попытался перенаправить на маршрут, но это дает тот же результат.Что меня беспокоит, так это то, что, когда я смотрю на маршрут, идентификатор института, кажется, передается с параметрами запроса (Area / Controller? InstituId = 17 вместо Area / Controller / 17)

MVC означает T4MVC, который являетсяфреймворк, используемый для избежания жесткого кодирования строк в перенаправлениях.

1 Ответ

0 голосов
/ 30 ноября 2018

Если кто-то в какой-то момент может столкнуться с этим, это на самом деле довольно сложно.Кажется, что в некоторых случаях T4MVC путает представления и интерпретирует:

return RedirectToAction(MVC.Area.Controller.Index(institutionId));

как

return RedirectToAction(MVC.Area.OtherController.Index(institutionId));

Если посмотреть на ActionParameters, у коллекции были и Controller, и OtherController в routeData, поэтому кажется, что это простопосмотрел имя контроллера по имени представления (индекс), нашел два экземпляра, принадлежащих обоим контроллерам, и сгенерировал поврежденную строку перенаправления MVC.После того как я изменил имя представления, параметры ActionParameters начали корректно разрешаться.

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