ASP.NET Core 2: как RedirectToPage с областью? - PullRequest
0 голосов
/ 31 августа 2018

RedirectToPage("Companies") будет перенаправлен на /Pages/Companies.cshtml (с контроллера ASP.NET MVC)

Но что если вы хотите перенаправить на эту страницу /Areas/MyArea/Pages/Companies.cshtml?

Все эти и многие другие не работают:

RedirectToPage("/MyArea/Companies.cshtml") 
RedirectToPage("MyArea/Companies.cshtml") 
RedirectToPage("./MyArea/Companies.cshtml") 
RedirectToPage("/MyArea/Companies") 
RedirectToPage("MyArea/Companies") 
RedirectToPage("./MyArea/Companies") 

Иногда я получаю сообщение об ошибке «Страница не найдена». Иногда получайте «Укажите корневой относительный путь с начальным символом« / »для генерации URL-адреса за пределами страницы Razor». Папка Pages отсутствует. Я знаю, что все это может изменить все правила снова.

P.S. Бритвенные страницы, настроенные с помощью простого .SetCompatibilityVersion (CompatibilityVersion.Version_2_1); особая маршрутизация не добавлена.

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Это работает для меня:

return RedirectToPage("/Companies", new { area = "MyArea" });

Работает под обычным .SetCompatibilityVersion(CompatibilityVersion.Version_2_1); без специальной настройки маршрутизации.

Я чувствую, что это будет популярный вопрос ... Благодаря Майку Брину он показал мне путь.

P.S. Если у вас есть папка Pages - все правила будут изменены еще раз. Вот так "Razor Pages" пытаются убежать от "MVC magic"

0 голосов
/ 31 августа 2018

Используйте перегрузку RedirectToPage, которая принимает объект, представляющий RouteValues ​​:

return RedirectToPage("/Companies", new { area = "MyArea" });

Обратите внимание, что '/' требуется, если вы используете RedirectToPage в контроллере (или где-либо за пределами Razor Page). В противном случае это не требуется (но все равно будет работать).

...