在ASP.NET Core Mvc集成MarkDown的方法
这几天在做文章编辑,首先就想到了markdown,它比其它的都要新,而且很好用,相对于其它的html编辑器,好久不更新,要好得多,哦~对了我现在已经用上新版的Edge了,经过很多朋友测试,性能比谷歌浏览器都要好很多,并且资源消耗也相对来说小。
好吧,言归正传,你首先需要下载MarkDown的相关样式脚本资源,下载完毕之后拖放你的ASP.NETCoreMvc项目中的wwwroot中。
二.初始化
在页面中我们理所当然需要引用css脚本资源,随后调用它的初始化方法。
我们的Html部分也很简单,它只需要一个Textarea盒子。
@Html.Raw(html)
调用markdown的初始化方法也很简单,我们通常这么做。
$(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.netcorehtmlhelper的@Html.Raw来进行转义,如果是markdown,您当然需要这么干。
三.优化
有时候我们想要上传咱们自己服务器的图片,经过发现,这个image上传的弹窗就在/lib/MarkDown/plugins/image-dialog中,我们仔细发现就可以进行改造。
好的,这一切都非常简单了,你自己发挥,我们只要保存成功,就很简单了,你可以操作这个js的任何东西,只要不破坏它的btn相关方法。随后,你可以写一个上传图片的Api来操作。
publicclassFileUploadController:Controller
{
privateIWebHostEnvironmenten;
publicFileUploadController(IWebHostEnvironmenten){this.en=en;}
publicIActionResultIndex(){returnView();}
[HttpPost]
publicasyncTaskUploadF()
{
varfiles=Request.Form.Files;
stringfilename=files[0].FileName;
stringfileExtention=System.IO.Path.GetExtension(files[0].FileName);
stringpath=Guid.NewGuid().ToString()+fileExtention;
stringbasepath=en.WebRootPath;
stringpath_server="/upfile/"+path;
using(FileStreamfstream=newFileStream(basepath+path_server,FileMode.OpenOrCreate,FileAccess.ReadWrite))
//using(FileStreamfstream=System.IO.File.Create(newFile))//两种都可以使用
{
awaitfiles[0].CopyToAsync(fstream);
}
returnOk(new{code=200,msg="上传成功!",filepath=path_server});
}
}
在我的项目中,我一般喜欢截取文章中的第一个图片作为的banner部分,ok这一切只需要一个helper。
publicstaticstring[]GetHtmlImageUrlList(stringsHtmlText)
{
//定义正则表达式用来匹配img标签
RegexregImg=newRegex(@"
]*?\bsrc[\s\t\r\n]*=[\s\t\r\n]*[""']?[\s\t\r\n]*(?[^\s\t\r\n""'<>]*)[^<>]*?/?[\s\t\r\n]*>",RegexOptions.IgnoreCase);
//搜索匹配的字符串
MatchCollectionmatches=regImg.Matches(sHtmlText);
inti=0;
string[]sUrlList=newstring[matches.Count];
//取得匹配项列表
foreach(Matchmatchinmatches)
sUrlList[i++]=match.Groups["imgUrl"].Value;
returnsUrlList;
}
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。