【问题标题】:Area links don't generate in asp.net-core-mvc区域链接不会在 asp.net-core-mvc 中生成
【发布时间】:2016-09-17 23:54:17
【问题描述】:

按照本指南,我一直在创建管理区域: 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 似乎没有处理链接助手标签?

知道我错过了什么吗?也许某个地方的配置步骤?

谢谢

【问题讨论】:

    标签: asp.net-core asp.net-core-mvc


    【解决方案1】:

    知道了!

    我需要将 _ViewImports.cshtml 添加到我的 Areas 文件夹中

    _ViewImports.cshtml 里面需要以下内容:

    @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
    

    奇怪的是教程中没有提到它

    【讨论】:

    • 谢谢。我遇到了同样的问题
    • 很好的发现,谢谢。我使用脚手架创建了我的区域,您会认为它确实应该默认创建 _View* 文件。我还添加了 _ViewStart.cshtml,但不是 100% 确定它是否需要根目录中的那个。
    • 您为我节省了大量时间。谢谢+1 :)
    • 这完全有效。默认情况下它真的应该在那里
    【解决方案2】:

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

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

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

    还有这个:

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

    没有任何效果......它无法识别该区域并且链接显示为

    /Controller/Action?Area=MyArea

    我真的很困惑,因为我有一个工作正常的区域。这时我才意识到我忘记在控制器上放 Area 注解了:

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

    不要忘记您的区域注释!

    【讨论】:

      【解决方案3】:
      • 1 将_ViewImport.cshtml 添加到新创建的区域。
      • 2 将"@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers" 添加到_ViewImports

      这会触发你的链接。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-02-17
        • 1970-01-01
        • 1970-01-01
        • 2011-08-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-01
        相关资源
        最近更新 更多