【问题标题】:Navigate from an area to a page with no area in ASP.NET从一个区域导航到 ASP.NET 中没有区域的页面
【发布时间】:2016-09-25 05:44:01
【问题描述】:

我将路由设置为默认加载/AreaName/Home/Index,并在添加时加载

<a asp-area="" asp-controller="Application" asp-action="Index"</a>,

Index.cshtml 我希望它转到/Application/Index,但是当将鼠标悬停在链接上时,网址看起来像这样localhost:######/AreaName/Application/ 而不是localhost:######/Application/

我认为我的路由有点偏离。这是我尝试过的:

app.UseMvc(routes =>
{
    routes.MapRoute(
        name: "Default",
        template: "{area}/{controller}/{action}/{id?}",
        defaults: new { area = "AreaName", controller = "Home", action = "Index" }
    );

    routes.MapRoute(
        name: "SomeName",
        template: "{area}/{controller}/{action}/{id?}",
        defaults: new { area = string.Empty, controller = "Application", action = "Index" }    
    );
}

我做错了什么?

【问题讨论】:

  • 这似乎正在使用 asp.net core 3.1

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


【解决方案1】:

您的路由表应该有一个没有区域的默认路由,您当前的配置将始终导致一个区域名称 = AreaName 的路由,因为您在第一条路由中将其默认为“AreaName”。

复制第一条路线并从中删除区域部分并删除第二条。

【讨论】:

  • 我设置默认区域的原因是因为我希望在应用启动时加载该区域。但在这样做时,现在我无法导航出该区域
  • 为什么将默认页面设置在区域内?如果必须,只需在根上的默认 Home 控制器内添加一个重定向到该区域内的另一个控制器
猜你喜欢
  • 2013-09-21
  • 2011-03-18
  • 2012-04-16
  • 2019-01-04
  • 2017-12-16
  • 1970-01-01
  • 2012-06-13
  • 1970-01-01
  • 2014-02-22
相关资源
最近更新 更多