Я подозреваю, что я делаю это неправильно.
По разным причинам мое приложение вынуждает пользователя делать выбор сразу после входа в систему.Чтобы гарантировать, что они вводят необходимые данные, я переопределяю метод OnActionExecuting в базовом классе контроллера, чтобы перехватить любую попытку выполнить действие до того, как эти данные были введены, и перенаправить пользователя на нужную страницу.Я сохраняю URL действия, которое они пытались выполнить, со следующим кодом:
url = Url.RouteUrl("Default", filterContext.RouteData.Values);
(filterContext - это объект ActionExecutingContext и параметр OnActionExecuting.)
Проблема I 'у меня есть то, что, если действие было связано с контроллером в области, URL, который я получаю, не отражает область.
Из других сообщений я понимаю, что я могу получить название области из коллекции DataTokens RouteData.Но я не уверен, как лучше это пройти.Я полагаю, я мог бы извлечь его и использовать метод RouteValueDictionary.Add, чтобы добавить его в RouteData.Values (при условии, что в этот момент Values недоступен только для чтения; я не знаю), но это выглядит немного ... странно, какпочему-то упущено.
Это действительно так, как это должно быть сделано?Что-то не так в другом месте, что Area отсутствует в моих RouteData.Values?