这几天在做文章编辑,首先就想到了markdown,它比其它的都要新,而且很好用,相对于其它的html编辑器,好久不更新,要好得多,哦~对了我现在已经用上新版的Edge了,经过很多朋友测试,性能比谷歌浏览器都要好很多,并且资源消耗也相对来说小。
一.前提
好吧,言归正传,你首先需要下载MarkDown的相关样式脚本资源,下载完毕之后拖放你的ASP.NET Core Mvc 项目中的wwwroot中。
二.初始化
在页面中我们理所当然需要引用css 脚本资源,随后调用它的初始化方法。
<script src="~/js/jquery-1.10.2.min.js"></script> <link href="~/Lib/MarkDown/css/editormd.css" rel="external nofollow" rel="stylesheet" /> <link href="~/Lib/MarkDown/css/editormd.preview.css" rel="external nofollow" rel="stylesheet" /> <script src="~/Lib/MarkDown/js/editormd.js"></script> <link href="~/lib/bootstrap/dist/css/bootstrap.min.css" rel="external nofollow" rel="stylesheet" />
我们的Html部分也很简单,它只需要一个Textarea盒子。
<div id="test-editormd"> <textarea id="articleContent" style="display: none;">@Html.Raw(html)</textarea> </div>
调用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.net core htmlhelper 的@Html.Raw来进行转义,如果是markdown,您当然需要这么干。
三.优化
有时候我们想要上传咱们自己服务器的图片,经过发现,这个image上传的弹窗就在/lib/MarkDown/plugins/image-dialog中,我们仔细发现就可以进行改造。
好的,这一切都非常简单了,你自己发挥,我们只要保存成功,就很简单了,你可以操作这个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; }
到此这篇关于在ASP.NET Core Mvc集成MarkDown的方法的文章就介绍到这了,更多相关ASP.NET Core Mvc集成MarkDown内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!
校验者: @Dream on dreamer. @zehuichen123 @JanzenLiu @小瑶 @\SRY/ 翻译者: @StupidStalker @文谊 @t9UhoI 注意,在本文中 bagging 和 boosting 为了更好的保留原文意图,不进行翻译 estimator->估计器 base estimator->基估计器 集成方法 的目标是把多个使用给定学习算法构
下面这篇教程会简单介绍React如何和三方库集成. 在这个例子中我们将会学习到如何混合使用React和jQuery UI 这个插件. 我们选用了tag-it这个jQuery插件来举例. 这个插件将无序列表(unordered list)转化成input标签来管理. <ul> <li>JavaScript</li> <li>CSS</li> </ul> 为了让上面这段代码能够运行, 我们需要
一、导入Mobile SDK 1.1 maven导入(推荐方式) 1.1.1 引入 maven 仓库地址 在工程根目录的 build.gradle 找到(或增加) allprojects -> repositories 节点,然后在该节点加入 maven 仓库地址 https://dl.bintray.com/rokid/maven/,如下所示: allprojects { reposit
本文向大家介绍在Ruby on Rails中使用Markdown的方法,包括了在Ruby on Rails中使用Markdown的方法的使用技巧和注意事项,需要的朋友参考一下 实现 Markdown 语法和代码语法高亮分别是用的 Redcarpet 和 pygments.rb 两个 Gem: https://github.com/vmg/redcarpet https://gith
本文向大家介绍SpringBoot集成SpringMVC的方法示例,包括了SpringBoot集成SpringMVC的方法示例的使用技巧和注意事项,需要的朋友参考一下 Spring MVC是一款优秀的、基于MVC思想的应用框架,它是Spring的一个子框架。是当前最优秀的MVC框架。 Spring Boot整合Spring MVC只需在pom.xml中引入 配置Spring MVC applica
本文向大家介绍springboot2.2.2集成dubbo的实现方法,包括了springboot2.2.2集成dubbo的实现方法的使用技巧和注意事项,需要的朋友参考一下 最近在学习dubbo,想着作一些笔记,从来没有在csdn上面写过博客,今天献出第一次,哈哈,直接上代码 一、创建父工程 二、创建提供者与消费者共用的api 该模块没有什么好说的,提供者和消费者都需要使用的接口api,提供者和消费