ASP.NET 核心区域链接 ( /?区域=admin )

ASP.NET Core area link ( /?Area=admin )

提问人:Kemal 提问时间:11/12/2023 最后编辑:marc_sKemal 更新时间:11/12/2023 访问量:25

问:

我创建了一个区域,但我有一个问题。我在表单标签中使用带有或标记帮助程序的重定向。@url.action

<a asp-action="AddPage" asp-controller="Orders" asp-area="admin">Link</a>

<a href="@Url.Action("Index","Home",new{Area="admin"})">Admin Sayfasi</a>

但它不断将我重定向到这样的页面。

https://localhost:44357/?Area=admin

当我通过浏览器检查这些代码变成什么时,我看到类似这样的东西。

<a href="/Orders/AddPage?area=admin">Link</a>
<a href="/?Area=admin">Admin Sayfasi</a>

我实际上没有任何可见的代码错误发生这种情况,但我找不到原因。

我的文件中的端点扩展名如下:Startup.cs

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
    
    endpoints.MapAreaControllerRoute(
       name:"admin",
        areaName:"admin",
        pattern: "admin/{controller=Home}/{action=Index}/{id?}");
});

你能帮我解决这个问题吗?

提前感谢您的帮助。

asp.net-core asp.net-core-tag-helpers

评论


答:

0赞 Yong Shun 11/12/2023 #1

“添加区域路径”文档中:

通常,带区域的路径应放置在路由表的较早位置,因为它们比没有区域的路径更具体。

您需要将区域路由放在路由表的开头。

app.UseEndpoints(endpoints =>
{
    endpoints.MapAreaControllerRoute(
       name:"admin",
        areaName:"admin",
        pattern: "admin/{controller=Home}/{action=Index}/{id?}");

    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
});

enter image description here

评论

1赞 Kemal 11/12/2023
哇!我简直不敢相信这工作了,我多么努力地弄清楚这一点,:)谢谢。