首页 > 解决方案 > .NET Core 3.1 MapControllerRoute 导致没有区域的 url 无法正确加载

问题描述

我有这两种路线模式:

config.MapControllerRoute(
    name: "areas",
    pattern: "{area:exists}/{Controller=Home}/{Action=Index}/{id?}");
config.MapControllerRoute(
    name: "default",
    pattern: "{Controller=Home}/{Action=Index}/{id?}");

由于我的应用程序主要使用区域,所有带有区域的 url 都可以正常工作。例子:

[Area("Configuration")]
[TypeFilter(typeof(ValidateAdministratorFilter))]
public class ApiKeyApplicationController : Controller
{

    public ActionResult Index()
    {

    }
}

上面的 URL 在 @Url.Action 中看起来像这样:/Configuration/ApiKeyApplication/Index only

但是,如果我有一个没有区域的 url,如下所示:

[Route("/[controller]")]
[Authorize]
public class ConfirmController : Controller
{

    public ActionResult ConfirmDetails()
    {
        return View("~/Views/Modals/ConfirmDetails.cshtml");
    }
}

上面的 URL 在 @Url.Action 中看起来像这样:仅 /Confirm

如果我尝试将其设置为 /Confirm/ConfirmDetails,它将显示 404 错误

这是因为我的路由吗?

标签: asp.net-core.net-core

解决方案


你只需要删除你的路线ConfirmController

删除这个:

[Route("/[controller]")]

或者您可以将其更改为:

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

推荐阅读