ASP.Net Core:asp-action 标签不起作用

Ars*_*lan 5 asp.net-core

我有这个简单的锚标签。

<a asp-area="Admin" asp-action="Create" asp-controller="Users" class="btn btn-default">Create</a>
Run Code Online (Sandbox Code Playgroud)

代码结构如下。

在此处输入图片说明

生成的标记如下

<a class="btn btn-default" href="/Admin/Users">Create</a>
Run Code Online (Sandbox Code Playgroud)

它缺少操作(创建),但其余标签似乎工作正常。

路由设置如下

app.UseMvc(
    routes =>
        {
            routes.MapRoute(name: "default", template: "{controller=Home}/{action=Index}/{id?}");
            routes.MapRoute(
                name: "areaRoute",
                template: "{area:exists}/controller=Admin/{action=Index}/{id?}");
        });
Run Code Online (Sandbox Code Playgroud)

Ali*_*mal 8

这个问题的解决方法是复制~/Views/_ViewImports.cshtml~/AreaName/Views/_ViewImports.cshtml

这是因为 Tag helper 可用,因为 @addTagHelper它在_ViewImports.cshtml page.

一旦你这样做了,你的标签助手智能感知和你的标签助手代码一样工作!

希望这可以帮助。谢谢

参考:[已解决] 标签助手语法不适用于 ASP.NET Core 中的区域视图 - DotNetFunda.com


mve*_*mef 3

顺序很重要...将区域路由放在默认路由之上。

          routes.MapRoute(
                name: "adminDefault",
                template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");

           //catchall
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
Run Code Online (Sandbox Code Playgroud)