下面小編就為大家分享一篇Razor TagHelper實現Markdown轉HTML的方法,具有很好的參考價值,希望對大家有所協助。一起跟隨小編過來看看吧
Markdown是一種可以使用普通文字編輯器編寫的標記語言,通過簡單的標記文法,它可以使普通常值內容具有一定的格式。
用途
Markdown的文法簡潔明了、學習容易,而且功能比純文字更強,因此有很多人用它寫部落格。世界上最流行的部落格平台WordPress和大型CMS如Joomla、Drupal都能很好的支援Markdown。完全採用Markdown編輯器的部落格平台有Ghost和Typecho。
用於編寫說明文檔,並且以“README.MD”的檔案名稱儲存在軟體的目錄下面。
除此之外,現在由於我們有了RStudio這樣的神級編輯器,我們還可以快速將Markdown轉化為演講PPT、Word產品文檔、LaTex論文甚至是用非常少量的程式碼完成最小可用原型。在資料科學領域,Markdown已經被確立為科學研究規範,極大地推進了動態可重複性研究的曆史進程。
TagHelper
寫一個Razor TagHelper來實現Markdown轉HTML,這裡需要使用到CommonMark. NET這個類庫。
namespace ZKEACMS.Message.TagHelps{ [HtmlTargetElement("markdown", TagStructure = TagStructure.NormalOrSelfClosing)] [HtmlTargetElement(Attributes = "markdown")] public class MarkdownTagHelper : TagHelper { public ModelExpression Content { get; set; } public async override Task ProcessAsync(TagHelperContext context, TagHelperOutput output) { if (output.TagName == "markdown") { output.TagName = null; } output.Attributes.RemoveAll("markdown"); var content = await GetContent(output); var markdown = WebUtility.HtmlEncode(WebUtility.HtmlDecode(content)); var html = CommonMarkConverter.Convert(markdown); output.Content.SetHtmlContent(html ?? ""); } private async Task GetContent(TagHelperOutput output) { if (Content == null) return (await output.GetChildContentAsync()).GetContent(); return Content.Model?.ToString(); } }}
使用方式
首先要在_ViewImports.cshtml加入這個TagHelper,像這樣
@addTagHelper *, ZKEACMS.Message
然後就可以直接使用了
<markdown>@item.CommentContent</markdown>
以上這篇Razor TagHelper實現Markdown轉HTML的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援topic.alibabacloud.com。
相關推薦:
ASP.NET Core Razor頁面路由的詳細介紹
有關ASP.NET Core Razor頁面路由的詳細介紹
Asp.net MVC中關於Razor問題的解決方案