Laden...

Markdown in ASP.NET Core Views rendern

Erstellt von JimStark vor 2 Jahren Letzter Beitrag vor 2 Jahren 1.366 Views
JimStark Themenstarter:in
309 Beiträge seit 2020
vor 2 Jahren
Markdown in ASP.NET Core Views rendern

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