Razor TagHelper實現(xiàn)Markdown轉(zhuǎn)HTML的方法
Markdown是一種可以使用普通文本編輯器編寫的標(biāo)記語言,通過簡單的標(biāo)記語法,它可以使普通文本內(nèi)容具有一定的格式。
用途
Markdown的語法簡潔明了、學(xué)習(xí)容易,而且功能比純文本更強,因此有很多人用它寫博客。世界上最流行的博客平臺WordPress和大型CMS如Joomla、Drupal都能很好的支持Markdown。完全采用Markdown編輯器的博客平臺有Ghost和Typecho。
用于編寫說明文檔,并且以“README.MD”的文件名保存在軟件的目錄下面。
除此之外,現(xiàn)在由于我們有了RStudio這樣的神級編輯器,我們還可以快速將Markdown轉(zhuǎn)化為演講PPT、Word產(chǎn)品文檔、LaTex論文甚至是用非常少量的代碼完成最小可用原型。在數(shù)據(jù)科學(xué)領(lǐng)域,Markdown已經(jīng)被確立為科學(xué)研究規(guī)范,極大地推進了動態(tài)可重復(fù)性研究的歷史進程。
TagHelper
寫一個Razor TagHelper來實現(xiàn)Markdown轉(zhuǎn)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實現(xiàn)Markdown轉(zhuǎn)HTML的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
aspnet_regsql.exe 工具注冊數(shù)據(jù)庫的圖文方法
自 ASP.NET 2.0 起,微軟在 ASP.NET 上新增了很多功能,其中包括 Membership , Role , Profile 等等諸多功能2010-03-03
net core下鏈路追蹤skywalking安裝和簡單使用教程
本文將從0開始搭建兩個webapi項目,使用Skywalking來追蹤他們之間的調(diào)用關(guān)系及響應(yīng)時間,開發(fā)環(huán)境為VisualStudio2019,對net core 鏈路追蹤skywalking安裝和使用教程感興趣的朋友一起看看吧2021-10-10
asp.net core 屬性路由和約定路由的實現(xiàn)
ASP.NET Core中的WebAPI路由用于映射客戶端請求的URL到服務(wù)器端的控制器和操作方法,路由分為基于屬性的路由和約定路由兩種方式,本文就來介紹一下,感興趣的可以了解一下2025-01-01
.NET Core授權(quán)失敗自定義響應(yīng)信息的操作方法
這篇文章主要介紹了.NET Core授權(quán)失敗自定義響應(yīng)信息的操作方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-07-07
ASP.NET的事件模型(很適合學(xué)習(xí)的文章)
當(dāng)我們新建一個ASP.NET的應(yīng)用程序時,會默認生成一個Default.aspx和Default.aspx.cs頁面2012-10-10
.NET AppSettings與ConnectionStrings使用案例詳解
這篇文章主要介紹了.NET AppSettings與ConnectionStrings使用案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-08-08

