Как использовать ASP.NET MVC 3 и Stackoverflow Markdown

Я занимаюсь исследованиями в течение нескольких часов и не могу найти реальных источников для этого. Я создаю сайт в ASP.NET MVC 3 и хотел бы использовать редактор Markdown, который использует StackOverflow. У кого-нибудь есть хороший учебник?

Где вы загружаете последнюю уценку? На каком языке он написан? Где бы я начал интегрировать это в проект MVC 3? Даже после всех поисков и чтения, которые я сделал, я все еще довольно смущен.

Я наткнулся на один сайт. http://daringfireball.net/projects/markdown/ Но это кажется необычайно старым, и мне казалось бы, мне нужно кое-что узнать о CGI и PERL, которые у меня нет абсолютно никакого опыта с. Версия javascript/jQuery будет великолепной. Любые идеи, ссылки, ссылки очень ценятся.

UPDATE

Я заметил, что этот вопрос получает довольно много мнений, поэтому я решил обновить его некоторыми полезными ссылками. Мне удалось получить редактор Markdown, прекрасно работающий на CodeTunnel.com, и я написал несколько блогов об этом. Надеюсь, они помогут всем, кто сталкивается с этим вопросом.

Ответ 1

Stackoverflow open предоставил свою версию Markdown миру. Его называют MarkdownSharp и написано на С#.

Кто-то написал HtmlHelper здесь: http://blog.dantup.com/2011/03/an-asp-net-mvc-htmlhelper-extension-method-for-markdown-using-markdownsharp

Если вы ищете, как реализовать редактор javascript, существует вопрос: Интеграция текстового редактора Markitup в проект ASP.NET MVC

Ответ 2

Вероятно, вы ищете MarkdownSharp

реализация С# с открытым исходным кодом процессора Markdown, как показано в переполнении стека.

Чтобы интегрировать его в приложение MVC:

  • В до или в общем контроллере добавьте следующий метод действий

    public ActionResult FormatMarkdown(string markdownText)
    {
        var md = new MarkdownSharp.Markdown();
        string html = md.Transform(markdownText);
        return Json(html, JsonRequestBehavior.AllowGet);
    }
    
  • в представлении на стороне клиента:

    @Html.TextArea("mdText", new { rows = 12, cols = 60 })
    <div id="mdFormatted"></div>
    
  • и клиентская сторона JS:

    $(function () {
        var mdText = $("#mdText");
        var mdFormatted = $("#mdFormatted");
        function setFormatted(data) {
            mdFormatted.html(data);
        };
        mdText.toObservable("keypress")
        .Throttle(200)
        .Subscribe(function () {
            $.getJSON("@VirtualPathUtility.ToAbsolute("~/Util/FormatMarkdown/")", { 
                 markdownText: mdText.val() 
                }, setFormatted);
       })
    
  • Загрузите RxJs (от MSDN) и включите следующие два файла js

    <script src="@Url.Content("~/Scripts/rx.js")" type="text/javascript"></script>    
    <script src="@Url.Content("~/Scripts/rx.jquery.js")" type="text/javascript"></script>  
    

Ответ 3

Я знаю, что этот вопрос старый, но я наткнулся на другое решение markdowndeep, которое очень дружит с MVC

Он может быть установлен через nuget PM > Install-Package MarkdownDeep.Full

Markdown в С#

// Create an instance of Markdown
var md = new MarkdownDeep.Markdown();
// Set options
md.ExtraMode = true;
md.SafeMode = false;
string output = md.Transform(input);

Editor

1. Соедините предоставленные js, css, png и htm файлы на ваш сервер. В зависимости от места размещения этих файлов на вашем сервере вам может потребоваться обновить URL-адреса изображений в файле css.

2. Обновите страницу для ссылки на jQuery, библиотеку MarkdownDeep и файл css MarkdownDeep (опять же, вам может понадобиться изменить пути).

<link rel="stylesheet" href="mdd_styles.css" 
<script type="text/javascript" src="jQuery-1.4.2.min.js">
<script type="text/javascript" src="MarkdownDeepLib.min.js">

NB: MarkdownDeepLib.min.js - это упакованная, уменьшенная версия MarkdownDeep.js, MarkdownDeepEditor.js и MarkdownDeepEditorUI.js. Для отладки вы можете ссылаться на эти три файла.

3. Вставьте редактор Markdown на свою страницу следующим образом:

<div class="mdd_toolbar"></div>
<textarea cols=50 rows=10 class="mdd_editor"></textarea>
<div class="mdd_resizer"></div>
<div class="mdd_preview"></div>

Примечание. Связанные divs являются необязательными, и если они отсутствуют, плагин создаст их. Однако... вы можете столкнуться с перегрузкой страницы во время загрузки, если вы это сделаете. т.е.: он рекомендовал явно включить их.

4.Called плагин jQuery MarkdownDeep для преобразования текстового поля в MarkdownEditor

$("textarea.mdd_editor").MarkdownDeep({ 
    help_location: "/Content/mdd_help.html",
    disableTabHandling:true
 });

Хотя мне действительно нравится их продукт, я не связан с создателями markdowndeep. Я просто подумал, что они сделали хороший продукт

Ответ 4

Этот вопрос старый, но я просто оставляю здесь ответ, чтобы будущие читатели могли извлечь из этого выгоду.

Я использовал MarkdownSharp v1.13, он НЕ дезактивирует ваш вывод html. Например, если вы введете:

<script type="text/javascript">alert("Hacked");</script>

В поле ввода выход MarkdownSharp содержит тот же script. Таким образом, он подвергает ваш сайт уязвимости XSS.

Прочтите это из Статья в Stackoverflow на странице PageDown:

Следует отметить, что Markdown небезопасен, поскольку введенный пользователем ввод идет. В Markdown все что угодно, в частности что-то вроде <script>doEvil();</script>. Этот репозиторий PageDown включает в себя два плагина, которые использует Stack Exchange для дезинфекции ввода пользователя; см. описание Markdown.Sanitizer.js ниже.

Итак, с другой стороны, возможно, Markdown не должен был санировать ваш вход в первую очередь, а реализация MarkdownSharp просто соответствовала этим принципам. Следует упомянуть, что Stackoverflow использует MarkdownSharp на своей стороне.