Перенаправление на действия в области действий - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть область, в которой есть контроллер с некоторыми действиями.

имя контроллера: home .

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

 public IActionResult Action1()
 {
         some code ...

        return RedirectToAction("Action2");
 }

Action2 выглядит следующим образом:

 public IActionResult Action2()
 {
         some code ...

        return View();
 }

проблема в том, что он перенаправляет на указанное действие, но не записывает имя области перед именем контроллера

url должен быть => MyArea / home / action2

, но это => home / action2

, что делает ошибку 500.

и мой запуск:

  app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");

            endpoints.MapAreaControllerRoute(
                  name: "areas",
                         areaName: "MyArea",
                         pattern: "{area=MyArea}/{controller=Home}/{action=Index}/{id?}"
                );
        });

есть ли какое-нибудь решение?

заранее спасибо.

1 Ответ

0 голосов
/ 20 апреля 2020

1 - Измените RedirectToAction на

return RedirectToAction("Action2", "Home", new { area = "MyArea" });

2 - Ваша конфигурация маршрута должна быть такой, и вы должны зарегистрироваться область до контроллер по умолчанию

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "MyArea",// or name: "areas",
        pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
    endpoints.MapControllerRoute(
         name: "default",
         pattern: "{controller=Home}/{action=Index}/{id?}");
});

3 - В верхней части контроллера необходимо добавить атрибут [Area("MyArea")]

[Area("MyArea")]
public class HomeController : Controller
{
}
...