ASP.NET Core MVC中区域链接未生成

15

按照这个指南,我一直在创建一个管理区域:https://docs.asp.net/en/latest/mvc/controllers/areas.html

我可以通过直接输入网址导航到管理员页面,但是我无法生成链接。

我尝试将以下内容放置在Admin index.cshtml文件中:

<p><a asp-action="Index">Admin Index</a></p>
<p><a asp-controller="Home" asp-action="Index">Admin Index</a></p>
<p><a asp-area="Admin" asp-controller="Home" asp-action="Index">Admin Index</a></p>

然而,它们最终都变成了不可点击的锚点(没有 href 属性)。

事实上,当我查看源代码时,我仍然可以看到 "asp-action" 等标签。

<a asp-action="Index">Admin Index</a>

MVC好像没有处理链接助手标记?

不知道我错过了什么?也许是在某个配置步骤中?

谢谢

3个回答

34

知道了!

我需要在我的Areas文件夹中添加一个_ViewImports.cshtml文件。

_ViewImports.cshtml 文件需要包含以下内容:

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

很奇怪,在教程中没有提到它


谢谢。我遇到了同样的问题。 - Ásgeir Gunnar Stefánsson
1
太好了,谢谢。我使用脚手架创建了我的区域,你会认为它应该默认创建_View*文件。我还添加了_ViewStart.cshtml,但不确定是否需要覆盖根目录中的那个。 - David Ritchie
你刚刚为我节省了大量时间。谢谢 +1 :) - cpoDesign
1
这完全可行。它真的应该默认存在。 - Peck_conyon

4

鉴于这是我搜索问题时的第一个结果,即使我的问题略有不同,我也会在这里发布我的答案。

我的标签也没有起作用。我有这个:

<a href="@Url.Action("Queues", "Digium", new {Area = "Reporting"})">

同时还有这个内容:

<a asp-action="CurrentCalls" asp-controller="Digium" asp-area="Reporting">

什么都没有起作用……它无法识别区域,链接的输出如下:

/Controller/Action?Area=MyArea

我非常困惑,因为我有一个正常工作的区域。那时我意识到我忘记在控制器上添加区域注释:

[Area("Marketing")]
public class LinkedInController : Controller

别忘了添加区域注释!


2
  • 1 在新创建的区域中添加 _ViewImport.cshtml 文件。
  • 2 在 _ViewImports 中添加 "@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers" 代码。

这样可以触发你的链接。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接