在ASP.NET Core Mvc 集成MarkDown

  這幾天在作文章編輯,首先就想到了markdown,它比其它的都要新,並且很好用,相對於其它的html編輯器,很久不更新,要好得多,哦~對了我如今已經用上新版的Edge了,通過不少朋友測試,性能比谷歌瀏覽器都要好不少,而且資源消耗也相對來講小。css

一.前提

  好吧,言歸正傳,你首先須要下載MarkDown的相關樣式腳本資源,下載完畢以後拖放你的ASP.NET Core Mvc 項目中的wwwroot中。html

二.初始化

   在頁面中咱們理所固然須要引用css 腳本資源,隨後調用它的初始化方法。jquery

<script src="~/js/jquery-1.10.2.min.js"></script>
<link href="~/Lib/MarkDown/css/editormd.css" rel="stylesheet" />
<link href="~/Lib/MarkDown/css/editormd.preview.css" rel="stylesheet" />
<script src="~/Lib/MarkDown/js/editormd.js"></script>
<link href="~/lib/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet" />

  咱們的Html部分也很簡單,它只須要一個Textarea盒子。git

<div id="test-editormd">
        <textarea id="articleContent" style="display: none;">@Html.Raw(html)</textarea>
    </div>

  調用markdown的初始化方法也很簡單,咱們一般這麼作。github

$(function () { testEditor = editormd("test-editormd", { width: "99%", height: 640, syncScrolling: "single", path: "/Lib/MarkDown/lib/", saveHTMLToTextarea: true, emoji: true });
});

  到了這裏,我就會問?我如何獲取個人html呢?這很簡單隻要經過 testEditor.getHTML() 方法就能夠了,那麼你必定就會知道如何獲取markdown了 getMarkdown() ,這兩個方法取決你想保存什麼,若是你是保存了html,那麼你就無需經過asp.net core htmlhelper 的 @Html.Raw 來進行轉義,若是是markdown,您固然須要這麼幹。正則表達式

三.優化

  有時候咱們想要上傳我們本身服務器的圖片,通過發現,這個image上傳的彈窗就在/lib/MarkDown/plugins/image-dialog中,咱們仔細發現就能夠進行改造。bootstrap

  好的,這一切都很是簡單了,你本身發揮,咱們只要保存成功,就很簡單了,你能夠操做這個js的任何東西,只要不破壞它的btn相關方法。隨後,你能夠寫一個上傳圖片的Api來操做。瀏覽器

public class FileUploadController : Controller { private IWebHostEnvironment en; public FileUploadController(IWebHostEnvironment en) { this.en = en; } public IActionResult Index() { return View(); } [HttpPost] public async Task<IActionResult> UploadF() { var files = Request.Form.Files; string filename = files[0].FileName; string fileExtention = System.IO.Path.GetExtension(files[0].FileName); string path = Guid.NewGuid().ToString() + fileExtention; string basepath = en.WebRootPath; string path_server = "/upfile/" + path; using (FileStream fstream = new FileStream(basepath+path_server, FileMode.OpenOrCreate, FileAccess.ReadWrite)) // using (FileStream fstream = System.IO.File.Create(newFile)) //兩種均可以使用
 { await files[0].CopyToAsync(fstream); } return Ok(new { code = 200, msg = "上傳成功!" ,filepath = path_server}); } }

  在個人項目中,我通常喜歡截取文章中的第一個圖片做爲的banner部分,ok這一切只須要一個helper。服務器

public static string[] GetHtmlImageUrlList(string sHtmlText) { // 定義正則表達式用來匹配 img 標籤 
            Regex regImg = new Regex(@"<img\b[^<>]*?\bsrc[\s\t\r\n]*=[\s\t\r\n]*[""']?[\s\t\r\n]*(?<imgUrl>[^\s\t\r\n""'<>]*)[^<>]*?/?[\s\t\r\n]*>", RegexOptions.IgnoreCase); // 搜索匹配的字符串 
            MatchCollection matches = regImg.Matches(sHtmlText); int i = 0; string[] sUrlList = new string[matches.Count]; // 取得匹配項列表 
            foreach (Match match in matches) sUrlList[i++] = match.Groups["imgUrl"].Value; return sUrlList; }

 

原文出處:https://www.cnblogs.com/ZaraNet/p/12420011.htmlmarkdown

相關文章
相關標籤/搜索