Ausgehend von meinem letzten Post habe ich mal einen minimalen TagHelper gemacht, mit dem man direkt Markdown in Razor Views darstellen kann.
Dies könnte z.B. für Blogs, News,... nützlich sein.
Als Markdown Prozessor wird Markdig verwendet.
Benötigte NuGet-Packages:
markdig
Microsoft.AspNetCore.Mvc.TagHelpers
Der Datei _ViewImports.cshtml folgendes hinzufügen:
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, MarkdownTagExample
_MarkdownTagExample _mit eurem Projektnamen ersetzen, "*" gibt an dass alle TagHelper(-Ableitungen) in der jeweiligen Assembly hinzugefügt werden.
TagHelper hinzufügen (am besten in einen TagHelpers-Ordner, siehe Namespace):
using Microsoft.AspNetCore.Razor.TagHelpers;
using Markdig;
namespace MarkdownTagExample.TagHelpers
{
// Tag: <markdown md-content="@mymarkdown"/>
[HtmlTargetElement("markdown", TagStructure = TagStructure.WithoutEndTag)]
public class MarkdownTagHelper : TagHelper
{
public string MdContent {get;set;}
public override void Process(TagHelperContext context, TagHelperOutput output)
{
// Markdown will be rendered between div
output.TagName = "div";
output.TagMode = TagMode.StartTagAndEndTag;
output.Content.SetHtmlContent(Markdown.ToHtml(MdContent));
}
}
}
Markdown-Tag im View hinzufügen:
@{
ViewData["Title"] = "Home Page";
var md = "# Test\n- *Hello World!*\n - __Test__";
}
<markdown md-content="@md"/>
Mehr Infos: Tag Helpers in ASP.NET Core
GitHub Projekt: markdown-tag-aspnet