Syncfusion aspnetmvc blockeditor
Skill syncfusion/aspnetmvc-ui-components-skills/skills/syncfusion-aspnetmvc-blockeditor
Implement Syncfusion ASP.NET MVC Block Editor control. Use when building block-based rich content editors, configuring block types (Paragraph, Heading, List, Code, Table, Image, Callout, Collapsible), handling drag-and-drop, editor menus (slash command, context, block action, inline toolbar), events, methods, paste cleanup, undo/redo, globalization, appearance, collaborative editing with real-time synchronization, version history, and user presence features in ASP.NET MVC Razor views.From its SKILL.md
npx -y skills add syncfusion/aspnetmvc-ui-components-skills --skill syncfusion-aspnetmvc-blockeditorAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
12.7 KB, ~2.9k tokens by cl100k_base, as published. Nobody here has run it
Syncfusion ASP.NET MVC Block Editor
The Block Editor control provides a block-based rich content editing experience in ASP.NET MVC applications. Content is structured as a collection of typed blocks (Paragraph, Heading, List, Code, Table, Image, etc.), each independently configurable with content, properties, and inline styles.
Quick Start Example
@using Syncfusion.EJ2.BlockEditor
<div id='blockeditor-container'>
@Html.EJS().BlockEditor("block-editor").Render()
</div>
<style>
#blockeditor-container { margin: 20px auto; }
</style>
public ActionResult Index()
{
return View();
}
With initial blocks:
@using Syncfusion.EJ2.BlockEditor
<div id='blockeditor-container'>
@Html.EJS().BlockEditor("block-editor").Blocks((List<BlockModel>)ViewBag.BlocksData).Render()
</div>
public class BlockModel
{
public string id { get; set; }
public string blockType { get; set; }
public object properties { get; set; }
public List<object> content { get; set; }
}
public ActionResult Index()
{
var blocks = new List<BlockModel>
{
new BlockModel
{
id = "heading-1",
blockType = "Heading",
properties = new { level = 1 },
content = new List<object>
{
new { contentType = "Text", content = "My Document" }
}
},
new BlockModel
{
id = "para-1",
blockType = "Paragraph",
content = new List<object>
{
new { contentType = "Text", content = "Start writing here." }
}
}
};
ViewBag.BlocksData = blocks;
return View();
}
Documentation and Navigation Guide
Getting Started & Installation
π Read: references/getting-started.md
When user needs to:
- Install
Syncfusion.EJ2.MVC5NuGet package - Add namespace reference in
Web.config - Link CDN stylesheet and script in
_Layout.cshtml - Register the Syncfusion script manager
- Render a minimal Block Editor on a page
Block Types & Configuration
π Read: references/block-types.md
When user needs to:
- Understand all supported block types (Paragraph, Heading, List, Code, Quote, Callout, Divider, Image, Table, Collapsible, Template)
- Configure
blockType,content,properties,indent,cssClasson individual blocks - Set heading levels (1β4), list types (BulletList, NumberedList, Checklist), checklist
isCheckedstate - Add placeholder text to blocks
- Apply per-block CSS classes for custom styling
- Use Template blocks for custom HTML content
Inline Content & Styles
π Read: references/inline-content.md
When user needs to:
- Configure
contentType(Text, Link, Code, Mention, Label) - Set hyperlink properties (
url,openInNewWindow) on Link content - Configure Label content with
labelId, trigger character (TriggerChardefault:"$"), andLabelSettings - Configure the
Userscollection andUserModelfor Mention content - Configure Mention content with
userId - Apply inline text styles: bold, italic, underline, strikethrough, color, backgroundColor, superscript, subscript, uppercase, lowercase, inlineCode
Nested Blocks (Collapsible, Quote, Callout)
π Read: references/nested-blocks.md
When user needs to:
- Configure CollapsibleHeading or CollapsibleParagraph with
children,isExpanded,level - Configure Quote blocks with nested child Paragraph blocks
- Configure Callout blocks with nested children
- Set
parentId(top-level on BlockModel) to establish parent-child relationships
Embed Blocks (Image & Code)
π Read: references/embed-blocks.md
When user needs to:
- Render an Image block with
src,altText,width,height - Configure global
ImageBlockSettings(saveUrl, path, saveFormat, allowedTypes, maxFileSize, enableResize) - Upload images to a server via controller action
- Handle image upload lifecycle:
BeforeFileUpload(validate/cancel),FileUploading(add auth headers),FileUploadSuccess(read saved URL),FileUploadFailed(error feedback) - Configure Code blocks with syntax highlighting and language selection
- Set global
CodeBlockSettings(defaultLanguage default:"javascript", languages array)
Table Blocks
π Read: references/table-block.md
When user needs to:
- Render a Table block with columns, rows, and cells
- Configure
enableHeader,enableRowNumbers,readOnly,widthon a table - Define column headers (
headerText) and row cells withcolumnIdand nested blocks - Understand table resizing and multi-row/column selection/deletion
Editor Menus
π Read: references/editor-menus.md
When user needs to:
- Customize the Slash Command menu (
CommandMenuSettings): popup size, custom commands, tooltip, Filtering/ItemSelect events - Customize the Context menu (
ContextMenuSettings): enable, custom items, submenus, ShowItemOnClick, Opening/Closing/ItemSelect events - Customize the Block Action menu (
BlockActionsMenuSettings): custom items, tooltip, popup size, Opening/Closing/ItemSelect events - Customize the Inline Toolbar (
InlineToolbarSettings): enable, items, popup width, tooltip, ItemClick event - Add Transform, InlineCode, Link items to the Inline Toolbar
- Configure font color and background color pickers (
FontColorSettings,BackgroundColorSettings)
Events
π Read: references/events.md
When user needs to:
- Handle editor lifecycle:
Created,Focus,Blur - Respond to content changes:
BlockChanged,SelectionChanged - Handle drag operations:
BlockDragStart,BlockDragging,BlockDropped - Intercept paste operations:
BeforePasteCleanup,AfterPasteCleanup - Handle image upload lifecycle:
BeforeFileUpload,FileUploading,FileUploadSuccess,FileUploadFailed
Methods
π Read: references/methods.md
When user needs to:
- Add, remove, move, update, or get blocks programmatically (
addBlock,removeBlock,moveBlock,updateBlock,getBlock,getBlockCount) - Manage selection and cursor:
setSelection,setCursorPosition,getSelectedBlocks,getRange,selectRange,selectBlock,selectAllBlocks - Manage focus:
focusIn,focusOut - Apply formatting:
executeToolbarAction,enableToolbarItems,disableToolbarItems - Export content:
getDataAsJson,getDataAsHtml,renderBlocksFromJson,parseHtmlToBlocks,print - Always retrieve the component instance via
ej.base.getInstancein theCreatedevent
Appearance & Read-Only
π Read: references/appearance.md
When user needs to:
- Set editor
WidthandHeight - Enable
ReadOnlymode (view-only, no edits) - Apply a custom
CssClassto the editor container - Persist editor state across page reloads with
EnablePersistence
Paste Cleanup
π Read: references/paste-cleanup.md
When user needs to:
- Configure
PasteCleanupSettings:DeniedTags,KeepFormat,PlainText - Strip unwanted tags (script, iframe) from pasted content
- Paste as plain text stripping all formatting
Undo/Redo & Keyboard Shortcuts
π Read: references/undo-redo-keyboard.md
When user needs to:
- Configure
UndoRedoStacksize (default: 30) - Know all built-in keyboard shortcuts for formatting, block creation, block management
- Customize shortcuts via
KeyConfigproperty
Globalization & Accessibility
π Read: references/globalization.md
When user needs to:
- Set
Localefor localized UI strings (e.g.,defor German) - Enable RTL layout with
EnableRtl - Know the full localization key table
Drag & Drop
π Read: references/drag-drop.md
When user needs to:
- Enable or disable drag and drop with
EnableDragAndDrop - Understand single vs. multiple block dragging behavior
Security (XSS Prevention)
π Read: references/security.md
When user needs to:
- Understand the built-in
EnableHtmlSanitizerprotection (default:true) - Know which elements are automatically removed
- Escape HTML characters in output using
EnableHtmlEncode(default:false)
Collaborative Editing
π Read: references/collaborative-editing.md
When user needs to:
- Set up real-time collaborative editing using Yjs and providers (y-websocket, y-webrtc, Hocuspocus, Liveblocks, PartyKit)
- Configure
CollaborationSettingswith adapter and provider - Enable user presence and remote cursors with
EnableAwareness - Track active collaborators with
UsersandCurrentUserId - Implement version history with snapshots (create, restore, compare, export, import)
- Configure custom snapshot storage using
IVersionStorageinterface (IndexedDB, database, cloud) - Handle collaboration events:
SnapshotCreated,SnapshotRestored - Resolve synchronization issues and optimize performance for multiple users
Key Properties at a Glance
| Property | Type | Purpose |
|---|---|---|
Blocks | List<BlockModel> | Initial block content |
Width | string | Editor width (e.g., "100%", "800px") |
Height | string | Editor height (e.g., "80vh", "500px") |
ReadOnly | bool | Enable view-only mode (default: false) |
CssClass | string | Custom CSS class on editor container |
EnableDragAndDrop | bool | Allow block reordering (default: true) |
UndoRedoStack | int | Max undo/redo steps (default: 30) |
Locale | string | Culture code for localization (default: "en-US") |
EnableRtl | bool | Right-to-left layout (default: false) |
EnableHtmlSanitizer | bool | XSS protection β strips dangerous tags/attrs (default: true) |
EnableHtmlEncode | bool | Escape special HTML characters in output (default: false) |
EnablePersistence | bool | Persist editor state across page reloads (default: false) |
KeyConfig | object | Custom keyboard shortcut overrides |
CommandMenuSettings | object | Slash command menu config (/ key) |
ContextMenuSettings | object | Right-click context menu config |
BlockActionsMenu | object | Block action menu config (hover drag handle) |
InlineToolbarSettings | object | Inline formatting toolbar config (text selection) |
TransformSettings | object | Block transform options in the inline toolbar |
FontColorSettings | object | Font color palette/picker config |
BackgroundColorSettings | object | Background highlight color palette/picker config |
PasteCleanupSettings | object | Paste content cleanup rules |
ImageBlockSettings | object | Global image block configuration |
CodeBlockSettings | object | Global code block configuration (defaultLanguage: "javascript") |
LabelSettings | object | Label item definitions and trigger character (default: "$") |
Users | List<UserModel> | User list for @ mention resolution |
Common Patterns
Pattern 1 β Get Component Instance
Always capture the instance in Created; all method calls require this reference:
var blockEditorObj;
function onCreated() {
blockEditorObj = ej.base.getInstance(
document.getElementById('block-editor'),
ejs.blockeditor.BlockEditor
);
}
@Html.EJS().BlockEditor("block-editor").Created("onCreated").Render()
Pattern 2 β Export Content as JSON
var jsonData = blockEditorObj.getDataAsJson();
// Send to server or store in state
Pattern 3 β Programmatically Add a Block
var newBlock = {
id: 'new-para',
blockType: 'Paragraph',
content: [{ contentType: 'Text', content: 'Added programmatically' }]
};
blockEditorObj.addBlock(newBlock, 'existing-block-id', true); // true = insert after
Pattern 4 β Toggle Read-Only at Runtime
blockEditorObj.readOnly = true; // enable read-only
blockEditorObj.readOnly = false; // re-enable editing
What ships with it: 16 files
103.7 KB alongside SKILL.md
references/
- appearance.md4.2 KB
- block-types.md7.5 KB
- collaborative-editing.md18.4 KB
- drag-drop.md2.7 KB
- editor-menus.md13.1 KB
- embed-blocks.md9.3 KB
- events.md6.6 KB
- getting-started.md3.6 KB
- globalization.md3.1 KB
- inline-content.md7.4 KB
- methods.md7.1 KB
- nested-blocks.md6.0 KB
- paste-cleanup.md2.2 KB
- security.md2.9 KB
- table-block.md6.2 KB
- undo-redo-keyboard.md3.4 KB