在ASP.NET Core 2.1中添加自定义TagHelpers - c#

我严格按照ASP.NET Core文档进行操作,并花费了大量时间来拖曳堆栈溢出,试图实现简单的自定义TagHelper,但没有成功。

任何人都可以就任何陷阱或已知错误提出建议吗?

应用程序属性:

AssemblyName: AmpWeb
Target Framework .NET Core 2.1

NuGet软件包

Microsoft.AspNetCore.All 2.1.2

环保环境

OS: Windows 7 (x64)
SDK: Microsoft .NET Core SDK 2.1.302 (x64)
IDE: Visual Studio 2017 Professional 15.7.4

TagHelpers / EmailTagHelper.cs

using Microsoft.AspNetCore.Razor.TagHelpers;

namespace AmpWeb.TagHelpers
{
    [HtmlTargetElement(Attributes = "email")]
    public class EmailTagHelper : TagHelper
    {
        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            output.TagName = "a";    // Replaces <email> with <a> tag
        }
    }
}

Views / _ViewImports.cshtml

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, AmpWeb

Index.cshtml

<h1>Hello World</h1>
<email>WHY</email>

输出量

<h1>Hello World</h1>
<email>WHY</email>

参考方案

这是一个微妙的问题,但重要的。问题是这行代码[HtmlTargetElement(Attributes = "email")]

如果将其删除,则应该使用<email>WHY</email>标记起作用。您也可以将其替换为[HtmlTargetElement("email")],但实际上在这种情况下甚至不需要它,因为框架可以从类EmailTagHelper的名称推断出该信息。

通过包含[HtmlTargetElement(Attributes = "email")]表示您希望通过任何标签上的属性调用标签助手。因此,调用它的方式例如是<div email></div><span email></span>

如何在ASP.NET Core Web应用程序中增加JSON反序列化MaxDepth限制 - c#

我们正在将ASP.NET Core 2.1与.NET Framework 4.6.2结合使用。我们有一个客户需要向我们的Web应用程序发送一个很大程度上嵌套的json结构。当他们进行此调用时,我们将输出以下日志并返回错误: 读取器的MaxDepth超过了32。路径“ super.long.path.to property”,第1行,位置42111。”我浏览了…

ASP.NET Core 2.0中的多个身份 - c#

我正在将ASP.NET Core 1.0应用程序迁移到ASP.NET Core 2.0。在我的启动中,我正在配置两个身份:services.AddIdentity<IdentityUser, IdentityRole>(configureIdentity) .AddDefaultTokenProviders() .AddUserStore<…

如何基于框架执行不同的动作? (ASP.NET 5) - c#

假设您必须将C#应用程序从.NET框架迁移到新的.NET Core,因为您希望拥有其中的一些新功能。您拥有自己的代码库,并且希望一次获得完整的工作部件,因为一次迁移所有的工作量很大。主要思想是成为未来的完全核心。我的问题是:有没有一种方法可以检查一个框架中存在但另一个框架中没有的功能?还是根据框架执行不同的动作? 参考方案 有编译器指令(#if)来检查与两个…

从Axios请求以ASP.NET Core API返回下载文件 - c#

大家好我正在尝试从Axios Request从ASP.NET Core Web API下载文件。这是我的示例API方法。 (基于此stackoverflow question的代码)[HttpPost("download")] public async Task<IActionResult> DownloadFile(){ .…

如何在启用了ASP.NET Core 2.2 EndpointRouting的情况下使用RouteDataRequestCultureProvider? - c#

我正在尝试在新的ASP.NET Core 2.2 MVC项目中使用RouteDataRequestCultureProvider。我已经阅读了Routing in ASP.NET Core上的Microsoft文档,以了解2.2中引入的更改,但是我不明白为什么“文化”不被视为URL生成的环境值。我在Startup.cs中更新了ConfigureService…