首頁  >  文章  >  後端開發  >  Razor TagHelper實作Markdown轉HTML的方法_實用技巧

Razor TagHelper實作Markdown轉HTML的方法_實用技巧

韦小宝
韦小宝原創
2017-12-16 09:23:551806瀏覽

下面小編就為大家分享一篇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的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持PHP中文網。

相關建議:

#ASP.NET Core Razor頁面路由的詳細介紹

關於ASP.NET Core Razor頁面路由的詳細介紹

#Asp.net MVC中關於Razor問題的解決方法

#

以上是Razor TagHelper實作Markdown轉HTML的方法_實用技巧的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn