【发布时间】:2020-06-06 15:21:35
【问题描述】:
我尝试在我的项目中添加一个自定义标签助手,它将降价文本转换为 html。 对于我尝试同时使用 Makrdig.Markdown 和 CommonMarkConverter.Convert 的转换,但没有成功,但我认为问题在于没有通过 razor 页面检测到我的实现。
我的 TagHelper:
using Markdig;
using Microsoft.AspNetCore.Html;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
using Microsoft.AspNetCore.Razor.TagHelpers;
namespace CustomTagHelpers.Helpers
{
[HtmlTargetElement("markdown")]
public class MarkdownTagHelper : TagHelper
{
[HtmlAttributeName("for-content")]
public ModelExpression Content { get; set; }
public override void Process(TagHelperContext context, TagHelperOutput output)
{
output.TagMode = TagMode.SelfClosing;
output.TagName = "markdown-helper";
var markdown = Content.Model.ToString();
//var html = CommonMarkConverter.Convert(markdown);
var html = Markdig.Markdown.ToHtml(markdown);
output.Content.SetHtmlContent(html);
}
}
我已将其添加到 _ViewImports 文件中
@addTagHelper *, CustomTagHelpers.Helpers MarkdownTagHelper
这就是在我的视图中使用我的标签助手的代码,HelloMarkdown 是位于我的视图模型中的一个属性,链接到当前视图,它是一个带有 [BindProperty] 的公共字符串
<markdown for-content="HelloMarkdown"> </markdown>
最后,如果我在浏览器中检查 html 代码,它似乎是按字面意思解释的,所以它与代码中的相同:
<markdown for-content="HelloMarkdown"> </markdown>
虽然我想得到类似的东西
<markdown-helper><p><em>Hello World</em></p></markdown-helper>
【问题讨论】:
标签: c# asp.net-core razor-pages asp.net-core-tag-helpers