这几天在作文章编辑,首先就想到了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