Link 一代人没有在区域内建立正确的链接
Link generation not creating proper links to and within area
我有一个 ASP.NET 核心项目,只有一个区域叫做 Data
。默认 Home
控制器仍然不在任何区域。
问题
到项目中Data
区域的linking 不起作用。不过路由工作正常。
如果我手动输入 link localhost/Data 我得到控制器 Home
的正确操作 Index
面积Data
。所以路由绝对有效。
但是 <a asp-area="Data" asp-controller="Home" asp-action="Index">Data</a>
被评估为 link localhost/?area=Data,这不起作用,实际上应该是 localhost/Data。
区域 Data
内的链接也未正确评估。 localhost/Data/Controller 应该是 localhost/Controller。再次手动输入 link 工作正常。
配置
到目前为止我是如何配置项目来尝试让 link 工作的:
- 路线添加如下
app.UseMvc(routes =>
{
// Default Route
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}"
);
// Area Route
routes.MapRoute(
name: "areas",
template: "{area:exists}/{controller=Home}/{action=Index}/{id?}"
);
});
Data
中的所有控制器都具有属性 [Area("Data")]
。
- 在 Areas/Data/Views
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
. 中添加了 TagHelper _ViewImport.cshtml
我通常尝试遵循 official documentation,但似乎没有任何效果。
问题
所以我显然想让 link 在没有 "hardcoding" 的情况下工作,并且想知道为什么预期的行为似乎不起作用。
如有任何提示,我们将不胜感激。
您需要更改路线的顺序。您应该从更具体的路线开始,然后再到更一般的路线:
app.UseMvc(routes =>
{
// More specific area route
routes.MapRoute(
name: "areas",
template: "{area:exists}/{controller=Home}/{action=Index}/{id?}"
);
// Any other (default)
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}"
);
});
我有一个 ASP.NET 核心项目,只有一个区域叫做 Data
。默认 Home
控制器仍然不在任何区域。
问题
到项目中Data
区域的linking 不起作用。不过路由工作正常。
如果我手动输入 link localhost/Data 我得到控制器 Home
的正确操作 Index
面积Data
。所以路由绝对有效。
但是 <a asp-area="Data" asp-controller="Home" asp-action="Index">Data</a>
被评估为 link localhost/?area=Data,这不起作用,实际上应该是 localhost/Data。
区域 Data
内的链接也未正确评估。 localhost/Data/Controller 应该是 localhost/Controller。再次手动输入 link 工作正常。
配置
到目前为止我是如何配置项目来尝试让 link 工作的: - 路线添加如下
app.UseMvc(routes =>
{
// Default Route
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}"
);
// Area Route
routes.MapRoute(
name: "areas",
template: "{area:exists}/{controller=Home}/{action=Index}/{id?}"
);
});
Data
中的所有控制器都具有属性[Area("Data")]
。- 在 Areas/Data/Views
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
. 中添加了 TagHelper
_ViewImport.cshtml
我通常尝试遵循 official documentation,但似乎没有任何效果。
问题
所以我显然想让 link 在没有 "hardcoding" 的情况下工作,并且想知道为什么预期的行为似乎不起作用。
如有任何提示,我们将不胜感激。
您需要更改路线的顺序。您应该从更具体的路线开始,然后再到更一般的路线:
app.UseMvc(routes =>
{
// More specific area route
routes.MapRoute(
name: "areas",
template: "{area:exists}/{controller=Home}/{action=Index}/{id?}"
);
// Any other (default)
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}"
);
});