asp.net 核心 3.1 中的区域端点路由
Area endpoint routing in asp.net core 3.1
这是一个简单的问题,我只是出于好奇才问的
我这样设置到区域的端点路由:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapControllerRoute(
name: "areas",
pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();
});
这里是区域主页的控制器:
[Area("mynewarea")]
[Route("mynewarea/[controller]/[action]")]
public class HomeController : Controller
{
public IActionResult Index()
{
ViewBag.me = "hello world";
return View();
}
}
这是视图中的标签助手代码
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Index">Home</a>
<a class="nav-link text-dark" asp-area="mynewarea" asp-controller="Home" asp-action="Index">mynewarea</a>
这一切都很好,但并不像我预期的那样一致
例如,如果我把它放在 URL
https://localhost/
它按预期工作,我进入了主页
但如果我把它放在 URL
https://localhost/mynewarea
我得到一个 404
但是如果我把它放在 URL
https://localhost/mynewarea/Home/Index
我的页面符合预期
所以:
1. 有谁知道为什么我必须在我的区域明确说明 URLs
2. 有没有办法使默认区域 URLs 隐式工作,即作为适当的默认 URL
是运行aspnetcore v3.1.0
升级到当前 v3.1.1 后问题消失了
这是一个简单的问题,我只是出于好奇才问的
我这样设置到区域的端点路由:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapControllerRoute(
name: "areas",
pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();
});
这里是区域主页的控制器:
[Area("mynewarea")]
[Route("mynewarea/[controller]/[action]")]
public class HomeController : Controller
{
public IActionResult Index()
{
ViewBag.me = "hello world";
return View();
}
}
这是视图中的标签助手代码
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Index">Home</a>
<a class="nav-link text-dark" asp-area="mynewarea" asp-controller="Home" asp-action="Index">mynewarea</a>
这一切都很好,但并不像我预期的那样一致
例如,如果我把它放在 URL
https://localhost/
它按预期工作,我进入了主页
但如果我把它放在 URL
https://localhost/mynewarea
我得到一个 404
但是如果我把它放在 URL
https://localhost/mynewarea/Home/Index
我的页面符合预期
所以:
1. 有谁知道为什么我必须在我的区域明确说明 URLs
2. 有没有办法使默认区域 URLs 隐式工作,即作为适当的默认 URL
是运行aspnetcore v3.1.0
升级到当前 v3.1.1 后问题消失了