MVC markdown


前言

想在近段时间通过mvc开发个人博客,编辑器希望是markdown风格的,这样写文字会很方便。首先先解决在.net下markdown编辑器的实现,查了许多资料,有许多开源的markdown解析引擎,我暂且用的是在Nuget排名较高的Markdowndeep来解析,语法非常简单,几句代码轻松解析。

PS:接下来若出现mdd即代表MarkdownDeep

安装

在Nuget中通过Install-Package MarkdownDeep.Full命令来安装完整版的Markdowndeep

其中包括js版本和.net版本

或者通过Install-Package MarkdownDeep.NET命令来安装

只含安装.net版本

解析

安装完成后在Script文件中会加入几个mdd的包

MarkdownDeepLib.min.js是用来解析的,mdd_styles.css是默认的一些样式,通过js解析需要引入MarkdownDeepLib.min.js,css则可有可无

  1. js解析mdd

    1. var markdown = new MarkdownDeep.Markdown();
    2. md.ExtraMode = true;
    3. md.SafeMode = true;
    4. md.MarkdownInHtml = true;
    5. var output = md.Transform(content);

    到此为止,解析完成。是不是很简单!

    第一行是生成一个markdown对象,第二到第四行设置一些属性,第五行解析输出

    PS:如果有谁对mmd比较了解希望能说明下mmd属性具体作用

  2. .net解析mdd

    这里有两种方法

    1. 通过Nuget安装MarkdownDeepHelper,这是一个封装好的helper类,拿来直接在view中通过@Html.Markdown(something)来解析并返回MvcHtmlString
    2. 自己写个扩展方法实现MarkdownDeepHelper,两种方法其实都一样,因为代码量真的很少,.net的代码和js代码几乎完全一样。
    1. public static class MarkdownHelper
    2. {
    3. /// <summary>
    4. /// 生成一个私有静态实例
    5. /// </summary>
    6. private static Markdown markdown = new Markdown();
    7. /// <summary>
    8. /// 解析成Html并返回.
    9. /// </summary>
    10. /// <param name="helper">该方法扩展自HtmlHelper</param>
    11. /// <param name="text">需要被解析的字符串</param>
    12. /// <returns>The HTML representation of the supplied Markdown.</returns>
    13. public static IHtmlString Markdown(this HtmlHelper helper, string text)
    14. {
    15. // 通过Tranform方法解析字符串
    16. string html = markdown.Transform(text);
    17. markdown.ExtraMode = true;
    18. markdown.SafeMode = true;
    19. markdown.MarkdownInHtml = true;
    20. // 返回MvcHtmlString,防止被编码
    21. return new MvcHtmlString(html);
    22. }
    23. }

    在通过View中引入MarkdownHelper命名空间即可通过@Html.Markdown(something)解析 是不是和前者完全一样

    到此为止解析完成。

结束语

已经2点多了,实时预览放在下一次了。睡觉

PS:如果有哪些写的不对或不好的地方欢迎大家指点

MVC开发Markdown编辑器(1)的更多相关文章

  1. MVC开发Markdown编辑器(2)

    MVC开发Markdown编辑器(2) MVC Markdown 实时预览 我希望实现一个在线实时预览的Markdown编辑器,左边是编辑处,右边是实时预览界面. 准备工作 引入相关js和css 这里 ...

  2. 用nw.js开发markdown编辑器-已完成功能介绍

    这里文章都是从个人的github博客直接复制过来的,排版可能有点乱. 原始地址 http://benq.im/2015/10/29/hexomd-introduction   文章目录 1. 功能列表 ...

  3. Markdown编辑器开发记录(二):Markdown编辑器的使用与开发入门

    Markdown编辑器的使用与开发入门 在部门做技术分享的时候简单整理了一下手里的资料 1 是什么 1.1 Markdown是一种轻量级标记语言 Markdown是一种轻量级标记语言,创始人为约翰·格 ...

  4. Markdown编辑器开发记录(一):开发的初衷和初期踩的坑

    先说下选择Markdown编辑器的原因,我们进行平台开发,需要很多的操作手册和API文档,要在网站中展示出来就需要是HTML格式的文件,但是由于内容很多,不可能全部由技术人员进行文档的编写,如果是只有 ...

  5. 自己动手开发更好用的markdown编辑器-04(实时预览)

    这里文章都是从个人的github博客直接复制过来的,排版可能有点乱. 原始地址 http://benq.im/2015/04/25/hexomd-04/   程序打包   文章目录 1. 打开新窗口 ...

  6. 原创|我是如何从零学习开发一款跨平台桌面软件的(Markdown编辑器)

    原始冲动 最近一直在学习 Electron 开发桌面应用程序,目的是想做一个桌面编辑器,虽然一直在使用Typore这款神器,但无奈Typore太过国际化,在国内水土不服,无法满足我的一些需求. 比如实 ...

  7. 我是如何从零学习开发一款跨平台桌面软件的(Markdown编辑器)

    [本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究.若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!] 原始冲动 最近一 ...

  8. 自己动手开发更好用的markdown编辑器-07(扩展语法)

    这里文章都是从个人的github博客直接复制过来的,排版可能有点乱. 原始地址 http://benq.im/2015/05/19/hexomd-07/   文章目录 1. 准备工作 2. 目录语法 ...

  9. 好用的Markdown编辑器一览 readme.md 编辑查看

    https://github.com/pandao/editor.md https://pandao.github.io/editor.md/examples/index.html Editor.md ...

随机推荐

  1. 树莓派+qt+opencv

    树莓派:Qt开发套件和opencv安装sudo apt-get install qt4-dev-tools libqt4-dev 不用qt core 的话,其实只要按照 qt4-qmake就行了(只做 ...

  2. html table单双行颜色间隔(转载)

    直接上代码: <html> <head> <meta http-equiv="Content-Type" content="text/htm ...

  3. mysql常用脚本

    1.执行拼接字符串sql语句(可传参数) set @dbname='trickraft_14f.'; set @sql=CONCAT('SELECT * FROM ',@dbname,'Armforc ...

  4. (英文版)使用Visual Studio 2015 编写 MASM 汇编程序!

    原文地址:http://kipirvine.com/asm/gettingStartedVS2015/index.htm#CreatingProject Getting Started with MA ...

  5. DevExpress打印功能 z

    一.打印功能说明: 打印功能,我们有多种实现方式,可以根据需要自行选择,我简单的总结下两种方法. (1).使用微软.net框架自带的PrintDocument,这种方式是直接借助Graphics,自行 ...

  6. 解决脱离rails使用activerecord报错 NameError: uninitialized constant ActiveRecord::Migrator::Zlib

    上下文说明 原本系统是15.10,无奈只支持1年,所以今天升级16.04,环境答好后运行rake migratte报错 task :default => :migrate desc 'Run m ...

  7. 数组排序-冒泡排序-选择排序-插入排序-希尔排序-快速排序-Java实现

    这五种排序算法难度依次增加. 冒泡排序: 第一次将数组相邻两个元素依次比较,然后将大的元素往后移,像冒泡一样,最终最大的元素被移到数组的最末尾. 第二次将数组的前n-1个元素取出,然后相邻两个元素依次 ...

  8. svn: E175002: can not read HTTP status line

    问题:eclipse连接svn:https://bdsvn-pc/svn/Project,报错svn: E175002: can not read HTTP status line 解决办法:将域名改 ...

  9. [kuangbin带你飞]专题十二 基础DP1

            ID Origin Title   167 / 465 Problem A HDU 1024 Max Sum Plus Plus   234 / 372 Problem B HDU 1 ...

  10. Js获取当前日期时间及时间相关操作

    Js获取当前日期时间及时间格式 var myDate = new Date();myDate.getYear();        //获取当前年份(2位)myDate.getFullYear();   ...