重定向到区域操作中的操作
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
{
}
我有一个区域,其中有一个可以执行某些操作的控制器。
控制器名称是家。
有问题的操作如下所示:
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
{
}