重定向到区域操作中的操作

Redirect to action in area actions

我有一个区域,其中有一个可以执行某些操作的控制器。

控制器名称是

有问题的操作如下所示:

 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 - 将 RedirectToAction 更改为

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

2 - 你的路由配置必须是这样的并且你必须注册area before 默认控制器

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
{
}