Your search did not match any results.

Html Editor - Markdown Support

DevExtreme HTML Editor uses HTML markup to format its document content. This demo module converts content to Markdown with the help of the unified plugin library.

The code sets the the editor's converter property to an object that implements two functions: toHtml and fromHtml.

Try to edit or format text in the HTML Editor control and see how the Markdown Preview section reflects those changes.

Backend API
@section ExternalDependencies { <script src="https://unpkg.com/devextreme-quill@1.7.1/dist/dx-quill.min.js"></script> <script type="module"> import { unified } from "https://esm.sh/unified@11?bundle"; import remarkParse from "https://esm.sh/remark-parse@11?bundle"; import remarkRehype from "https://esm.sh/remark-rehype@11?bundle"; import rehypeStringify from "https://esm.sh/rehype-stringify@10?bundle"; import rehypeParse from "https://esm.sh/rehype-parse@9?bundle"; import rehypeRemark from "https://esm.sh/rehype-remark@10?bundle"; import remarkStringify from "https://esm.sh/remark-stringify@11?bundle"; window.unified = unified; window.remarkParse = remarkParse; window.remarkRehype = remarkRehype; window.rehypeStringify = rehypeStringify; window.rehypeParse = rehypeParse; window.rehypeRemark = rehypeRemark; window.remarkStringify = remarkStringify; </script> } @functions { object GetInputAttr(string key, string value) { return new { inputAttr = new Dictionary<string, string>() { { key, value } } }; } } @(Html.DevExtreme().HtmlEditor() .ID("html_editor") .Height(300) .Converter(c => c .ToHtml("toHtml") .FromHtml("fromHtml") ) .Value(new JS("markup")) .OnValueChanged("valueChanged") .Toolbar(toolbar => toolbar.Items( items => { items.Add().Name(HtmlEditorToolbarItem.Undo); items.Add().Name(HtmlEditorToolbarItem.Redo); items.Add().Name(HtmlEditorToolbarItem.Separator); items.Add().Name(HtmlEditorToolbarItem.Bold); items.Add().Name(HtmlEditorToolbarItem.Italic); items.Add().Name(HtmlEditorToolbarItem.Separator); items.Add() .Name("header") .AcceptedValues(new JS("[false, 1, 2, 3, 4, 5]")) .Option("options", GetInputAttr("aria-label", "Header")); items.Add().Name(HtmlEditorToolbarItem.Separator); items.Add().Name(HtmlEditorToolbarItem.OrderedList); items.Add().Name(HtmlEditorToolbarItem.BulletList); }) ) ) <div class="options"> <div class="value-title">Markdown Preview</div> <div class="value-content" tabindex="0"></div> </div> <script> const updateValueContent = (value) => { $('.value-content').text(value); }; function toHtml(value) { const result = unified() .use(remarkParse) .use(remarkRehype) .use(rehypeStringify) .processSync(value) .toString(); return result; } function fromHtml(value) { const result = unified() .use(rehypeParse) .use(rehypeRemark) .use(remarkStringify) .processSync(value) .toString(); return result; }; function valueChanged({ value }) { updateValueContent(value); } var markup = `## ![HtmlEditor](../../images/widgets/HtmlEditor.svg) Formatted Text Editor (HTML Editor) Lists: 1. Use numbers followed by a period for an ordered list. 1. Use a single asterisk for a bullet list. Formats: * Enclose a word in single asterisks for *italic*. * Enclose a word in double asterisks for **bold**. `; updateValueContent(markup); </script>
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using DevExtreme.NETCore.Demos.Models.SampleData; namespace DevExtreme.NETCore.Demos.Controllers { public class HtmlEditorController : Controller { public IActionResult MarkdownSupport() { return View(); } } }
.dx-htmleditor-content img { vertical-align: middle; padding-right: 10px; margin-bottom: 22px; } .value-title { font-size: var(--dx-font-size-sm); font-weight: 500; } .value-content { margin-top: 20px; overflow: auto; height: 210px; white-space: pre-wrap; border: 1px solid var(--dx-color-border); padding: 16px; background-color: var(--dx-color-main-bg); } .options { margin-top: 20px; padding: 20px; background-color: rgba(191, 191, 191, 0.15); box-sizing: border-box; width: 100%; }