如何在 asp.net core 3.0 中使用 TagHelpers?
How to use TagHelpers in asp.net core 3.0?
我正在尝试让自定义标签助手在 asp-net core 3.0 中工作。
using System.Threading.Tasks;
using Microsoft.AspNetCore.Razor.TagHelpers;
namespace MyProject.TagHelpers
{
[HtmlTargetElement("p", Attributes = "markdown")]
[HtmlTargetElement("markdown")]
[OutputElementHint("p")]
public class MarkdownTagHelper : TagHelper
{
public async override Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
{
output.Content.SetHtmlContent("<p>lkajsdlkjasdlkjasd</p>");
}
}
}
_ViewImports.cshtml
:
@using MyProject
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, MyProject
我正在尝试在 TermsConditions.cshtml
文件中引用 <markdown></markdown>
。 (完整文件:)
<div>
<markdown></markdown>
</div>
但是,在调用该视图时,markdown
标记仍然不会被替换。
我发现了很多问题、博客、...,但到目前为止没有任何效果。我检查了以下常见错误。
- 标记助手 class 已制作 public
- _ViewImports.cshtml 放置在所有其他视图所在的 Views 文件夹中
- 尝试了
Process
的异步和非异步版本
问题:
我需要做什么才能让 TagHelpers 工作?
看起来你没有正确应用它..
改变
[HtmlTargetElement("p", Attributes = "markdown")]
[HtmlTargetElement("markdown")]
[OutputElementHint("p")]
至
[HtmlTargetElement("markdown")]
在您的原始代码中,您需要执行类似 <p markdown="some text"></p>
的操作
根据现有信息,一切看起来都不错。所以我怀疑这实际上不是您的程序集名称;
@addTagHelper *, MyProject
也许我会节省一些人的时间。在我的例子中,当前项目中缺少 AssemblyName
,因此没有应用标签助手。
在 _ViewImports.cshtml
文件中应该使用这个 AssemblyName
如:
@using AssemblyName
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, AssemblyName
并且不要忘记添加这些程序集:
Microsoft.AspNetCore.Mvc.Razor
Microsoft.AspNetCore.Mvc.TagHelpers
Microsoft.AspNetCore.Razor.Runtime
我正在尝试让自定义标签助手在 asp-net core 3.0 中工作。
using System.Threading.Tasks;
using Microsoft.AspNetCore.Razor.TagHelpers;
namespace MyProject.TagHelpers
{
[HtmlTargetElement("p", Attributes = "markdown")]
[HtmlTargetElement("markdown")]
[OutputElementHint("p")]
public class MarkdownTagHelper : TagHelper
{
public async override Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
{
output.Content.SetHtmlContent("<p>lkajsdlkjasdlkjasd</p>");
}
}
}
_ViewImports.cshtml
:
@using MyProject
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, MyProject
我正在尝试在 TermsConditions.cshtml
文件中引用 <markdown></markdown>
。 (完整文件:)
<div>
<markdown></markdown>
</div>
但是,在调用该视图时,markdown
标记仍然不会被替换。
我发现了很多问题、博客、...,但到目前为止没有任何效果。我检查了以下常见错误。
- 标记助手 class 已制作 public
- _ViewImports.cshtml 放置在所有其他视图所在的 Views 文件夹中
- 尝试了
Process
的异步和非异步版本
问题:
我需要做什么才能让 TagHelpers 工作?
看起来你没有正确应用它..
改变
[HtmlTargetElement("p", Attributes = "markdown")]
[HtmlTargetElement("markdown")]
[OutputElementHint("p")]
至
[HtmlTargetElement("markdown")]
在您的原始代码中,您需要执行类似 <p markdown="some text"></p>
根据现有信息,一切看起来都不错。所以我怀疑这实际上不是您的程序集名称;
@addTagHelper *, MyProject
也许我会节省一些人的时间。在我的例子中,当前项目中缺少 AssemblyName
,因此没有应用标签助手。
在 _ViewImports.cshtml
文件中应该使用这个 AssemblyName
如:
@using AssemblyName
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, AssemblyName
并且不要忘记添加这些程序集:
Microsoft.AspNetCore.Mvc.Razor
Microsoft.AspNetCore.Mvc.TagHelpers
Microsoft.AspNetCore.Razor.Runtime