我在一个项目中创建了一个新的区域来分离关注点.然而,我刚刚遇到了一个奇怪的问题,taghelpers无法正常工作,甚至根本无法构建正确的URL.

最初的问题是这样的:

<a class="btn btn-secondary btn-block font-weight-bold text-light" role="button" asp-area="Retail" asp-controller="RateQuery" asp-action="RateQuery"
   asp-route-partyid="@proOne.ProPartyId">
    @postFou.FouName<br>
    @postFou.FouAddr<br>
    @postFou.FouTown
</a>

我试着做了一点测试:

<a href="/Retail/RateQuery/RateQuery?partyid=123">Test Link</a><br />
<a asp-controller="Main" asp-action="Index">Test Link to Home</a>

所以,"测试链接"起作用了,但"测试链接到主页"不起作用.

在我的项目的其余部分,常规区域,一切都很好.我确实在路由中登记了这一区域.我是不是应该为新区的Taghelper添加一些特定的东西?

该项目位于框架netcoreapp3.1上

编辑:

这也不起作用:

<a asp-area="Retail" asp-controller="Main" asp-action="Index">Test Link to Home2</a>

另外,我的Startup.cs:

 app.UseEndpoints(endpoints =>
{
    // Area route
    endpoints.MapControllerRoute(
        name: "areas",
        pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");

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

            

            

推荐答案

首先,我想把这个帖子归功于:Using TagHelpers in Area Views

问题不同,但答案实际上是相同的. 您需要在Views文件夹中 for each 区域创建一个特定的_ViewImport.cshtml文件.

它似乎可以具有与Main_ViewImports文件相同的标记,尤其是在我的例子中,我用于这些区域视图的_Layout文件位于项目的主干中.

通过添加此文件,标记帮助器可以正常工作并呈现正确的URL.

Csharp相关问答推荐

如何使用FastEndpoints和.NET 8 WebAppliationBuilder进行集成测试?

使用变量子根名称在C#中重新初始化SON文件

AutoMapper -如何为两个不同的用例设置单个映射?

Microsoft. VisualBasic. FileIO. FileSystem. MoveFile()对话框有错误?

dotnet集合中内部数组的局部变量副本的用途是什么?'

当通过Google的Gmail Api发送邮件时,签名会产生dkim = neutral(正文散列未验证)'

从c#列表中删除额外的对象&对象&>从ASP.NET WebForm返回json响应

UWP中的任务和界面

为什么无法将对象转换为泛型类型

在不添加不必要的尾随零的情况下本地化浮点型?

如何防止Visual Studio断点以红色突出显示到整行?

如何避免在.NET中将日志(log)写入相对路径

C#LINQ子字符串

C#LINQ延迟执行和嵌套方法

将字符串类型日期输入(yyyy-mm-ddthh:mm:ss)转换为MM/dd/yyyy格式

如何在.NET Core 8中自定义标识用户模型

Xamarin Forms应用程序中登录页面的用户名和密码编辑文本之间不需要的空格

使用C#代码和SQL SERVER中的相同证书签名会产生不同的结果

无法使用直接URL通过PictureBox.ImageLocation加载图像

如何根据分割文本的块数来计算文本的大小?