Я занимаюсь исследованиями в течение нескольких часов и не могу найти реальных источников для этого. Я создаю сайт в ASP.NET MVC 3 и хотел бы использовать редактор Markdown, который использует StackOverflow. У кого-нибудь есть хороший учебник?
Где вы загружаете последнюю уценку? На каком языке он написан? Где бы я начал интегрировать это в проект MVC 3? Даже после всех поисков и чтения, которые я сделал, я все еще довольно смущен.
Я наткнулся на один сайт. http://daringfireball.net/projects/markdown/ Но это кажется необычайно старым, и мне казалось бы, мне нужно кое-что узнать о CGI и PERL, которые у меня нет абсолютно никакого опыта с. Версия javascript/jQuery будет великолепной. Любые идеи, ссылки, ссылки очень ценятся.
Я заметил, что этот вопрос получает довольно много мнений, поэтому я решил обновить его некоторыми полезными ссылками. Мне удалось получить редактор Markdown, прекрасно работающий на CodeTunnel.com, и я написал несколько блогов об этом. Надеюсь, они помогут всем, кто сталкивается с этим вопросом.
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
Вероятно, вы ищете 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>
Я знаю, что этот вопрос старый, но я наткнулся на другое решение markdowndeep, которое очень дружит с MVC
Он может быть установлен через nuget PM > Install-Package MarkdownDeep.Full
// Create an instance of Markdown
var md = new MarkdownDeep.Markdown();
// Set options
md.ExtraMode = true;
md.SafeMode = false;
string output = md.Transform(input);
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. Я просто подумал, что они сделали хороший продукт
Этот вопрос старый, но я просто оставляю здесь ответ, чтобы будущие читатели могли извлечь из этого выгоду.
Я использовал 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 на своей стороне.