为了账号安全,请及时绑定邮箱和手机立即绑定

如何重定向到 ASP.NET Core 2.1 中另一个区域的操作

如何重定向到 ASP.NET Core 2.1 中另一个区域的操作

C#
ITMISS 2021-10-09 10:38:05
我尝试使用以下代码从默认区域中的操作重定向到 ControlPanel 区域中的操作:return RedirectToAction(nameof(Areas.ControlPanel.Controllers.HomeController.Index),                             nameof(Areas.ControlPanel.Controllers.HomeController).Replace("Controller", ""),                            new { area = nameof(Areas.ControlPanel) });但它在浏览器中生成这个 url: https://localhost:44360/Home/Index?area=ControlPanel虽然它希望它是:https://localhost:44360/ControlPanel/Home/Index有什么想法可以解决吗?
查看完整描述

3 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

我在这里找到了解决方案。ControlPanel 区域中的 Home 控制器必须如下所示:


namespace Solution.Areas.ControlPanel.Controllers

{

    [Area(nameof(ControlPanel))]

    [Route(nameof(ControlPanel) + "/[controller]")]

    public class HomeController : Controller

    {

        public IActionResult Index() => View();

    }

}

重要的部分是 [Route(nameof(ControlPanel) + "/[controller]")]。


查看完整回答
反对 回复 2021-10-09
?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

你的说法不完全清楚,试试这个:

return RedirectToAction("action", "controller", new { area = "area" });


查看完整回答
反对 回复 2021-10-09
?
大话西游666

TA贡献1817条经验 获得超14个赞

确保首先注册您的区域路线:


 app.UseMvc(routes =>

        {

        routes.MapRoute(name: "areas", template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");

        routes.MapRoute(name: "default", template: "{controller=Home}/{action=Index}/{id?}");

    });

替代定义每个区域控制器的控制器级别路由:


[Area("[areaname]")]

[Route("[areaname]/[controller]")]

public class YourController : Controller

{

    public IActionResult Index() => View();

}

所有其他失败都明确使用路由:


var url = Url.RouteUrl("areas", new { controller = "[controller]", action = "Index", area = "[areaname]" });

                        return Redirect(url);


查看完整回答
反对 回复 2021-10-09
  • 3 回答
  • 0 关注
  • 184 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信