zoukankan      html  css  js  c++  java
  • MVC开发Markdown编辑器(1)

    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:如果有哪些写的不对或不好的地方欢迎大家指点

  • 相关阅读:
    合并一个二维数组中相同项,其他数量则相加
    清除空值
    数组的一维下标换为指定的key值
    二维数组排序
    word输出
    解决Zend加密的PHP页面出现Fatal error: Incompatible file format: The encoded file has format major ID 1, whereas the Loader expects 4 in
    nginx反向代理substitutions4nginx模块实现替换字符盗站 nginx.conf配置
    ubuntu 编译安装nginx 并添加substitutions4nginx模块
    windows 2008 R2 wincache 不稳定
    php5.5及php5.6 wincache无法启用问题
  • 原文地址:https://www.cnblogs.com/Jack-Blog/p/4518670.html
Copyright © 2011-2022 走看看