HtmlEditor (Blazor)

This article demonstrates how to use the HtmlEditor component. Check also the component guide and API reference.

Get and set the value

As all Radzen Blazor input components the HtmlEditor has a Value property which gets and sets the value of the component. Use @bind-Value to get the user input.

<RadzenHtmlEditor @bind-Value=@htmlValue />
@code {
  string htmlValue = "<h1>Hello World!!!</h1>";
}

Tools

The HtmlEditor provides various tools for content editing - bold, italic, color, various text formatting etc. By default all tools are enabled. To specify your own set of tools use the corresponding tag.

<RadzenHtmlEditor @bind-Value=@value>
  <RadzenHtmlEditorUndo />
  <RadzenHtmlEditorRedo />
  <RadzenHtmlEditorSeparator />
  <RadzenHtmlEditorBold />
  <RadzenHtmlEditorItalic />
  <RadzenHtmlEditorUnderline />
  <RadzenHtmlEditorStrikeThrough />
  <RadzenHtmlEditorSeparator />
  <RadzenHtmlEditorColor />
  <RadzenHtmlEditorBackground />
  <RadzenHtmlEditorRemoveFormat />
</RadzenHtmlEditor>

The Radzen HtmlEditor supports the following tools:

  • RadzenHtmlEditorUndo - allows the user to undo the last action (result of other tool, typing or pasting).
  • RadzenHtmlEditorRedo - allows the use to redo the last undone action.
  • RadzenHtmlEditorSeparator - displays a vertical separator used to delimit group of similar tools.
  • RadzenHtmlEditorBold - toggles the bold style of the selected text.
  • RadzenHtmlEditorItalic - toggles the italic style of the selected text.
  • RadzenHtmlEditorUnderline - toggles the underline style of the selected text.
  • RadzenHtmlEditorStrikeThrough - toggles the strikethrough style of the selected text.
  • RadzenHtmlEditorAlignLeft - toggles left text alignment.
  • RadzenHtmlEditorAlignCenter - toggles center text alignment.
  • RadzenHtmlEditorAlignRight - toggles right text alignment.
  • RadzenHtmlEditorJustify - toggles justified text alignment.
  • RadzenHtmlEditorIndent - indents the selected text.
  • RadzenHtmlEditorOutdent - outdents the selected text.
  • RadzenHtmlEditorUnorderedList - inserts unordered (bullet) list.
  • RadzenHtmlEditorOrderedList - inserts ordered (numbered) list.
  • RadzenHtmlEditorColor - sets the foreground color of the selected text.
  • RadzenHtmlEditorBackground - sets the background color of the selected text.
  • RadzenHtmlEditorRemoveFormat - removes the visual styling of the selected text.
  • RadzenHtmlEditorSubscript - converts the selected text to subscript.
  • RadzenHtmlEditorSuperscript - converts the selected text to superscript
  • RadzenHtmlEditorLink - inserts a hyperlink.
  • RadzenHtmlEditorUnlink - removes a hyperlink.
  • RadzenHtmlEditorImage - allows the user to insert an image by either uploading a file or selecting a URL. Requires File upload to be implemented and the UploadUrl property of the HtmlEditor to be set.
  • RadzenHtmlEditorFontName - set the font of the selected text.
  • RadzenHtmlEditorFontSize - set the font size of the selected text.
  • RadzenHtmlEditorFormatBlock - allows the user to format the selected text as heading or paragraph.
  • RadzenHtmlEditorCustomTool - allows the developer to implement a custom tool.

Specifying custom tools removes the default set of tools which is:

<RadzenHtmlEditorUndo />
<RadzenHtmlEditorRedo />
<RadzenHtmlEditorSeparator />
<RadzenHtmlEditorBold />
<RadzenHtmlEditorItalic />
<RadzenHtmlEditorUnderline />
<RadzenHtmlEditorStrikeThrough />
<RadzenHtmlEditorSeparator />
<RadzenHtmlEditorAlignLeft />
<RadzenHtmlEditorAlignCenter />
<RadzenHtmlEditorAlignRight />
<RadzenHtmlEditorJustify />
<RadzenHtmlEditorSeparator />
<RadzenHtmlEditorIndent />
<RadzenHtmlEditorOutdent />
<RadzenHtmlEditorUnorderedList />
<RadzenHtmlEditorOrderedList />
<RadzenHtmlEditorSeparator />
<RadzenHtmlEditorColor />
<RadzenHtmlEditorBackground />
<RadzenHtmlEditorRemoveFormat />
<RadzenHtmlEditorSeparator />
<RadzenHtmlEditorSubscript />
<RadzenHtmlEditorSuperscript />
<RadzenHtmlEditorSeparator />
<RadzenHtmlEditorLink />
<RadzenHtmlEditorUnlink />
<RadzenHtmlEditorImage />
<RadzenHtmlEditorFontName />
<RadzenHtmlEditorFontSize />
<RadzenHtmlEditorFormatBlock />

File upload

The Radzen HtmlEditor requires file upload support to be implemented for uploading and pasting images. Here is a minimal implementation that stores uploaded files in the wwwroot directory of the application and uses GUID for the file names.

using System;
using System.IO;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Hosting;

namespace YourApplicationNamespace.Controllers
{

    public partial class UploadController : Controller
    {
        private readonly IWebHostEnvironment environment;

        public UploadController(IWebHostEnvironment environment)
        {
            this.environment = environment;
        }
    }

    [HttpPost("upload/image")]
    public IActionResult Image(IFormFile file)
    {
        try
        {
            var fileName = $"{Guid.NewGuid()}{Path.GetExtension(file.FileName)}";

            using (var stream = new FileStream(Path.Combine(environment.WebRootPath, fileName), FileMode.Create))
            {
                // Save the file
                file.CopyTo(stream);

                // Return the URL of the file
                var url = Url.Content($"~/{fileName}");

                return Ok(new { Url = url });
            }
        }
        catch (Exception ex)
        {
            return StatusCode(500, ex.Message);
        }
    }
}

Radzen Blazor applications come with built-in support for image uploads via the generated UploadController.cs. If you have an existing application you will need to delete the UploadController.cs file to get the image upload functionality (or just copy and paste the Image method from the code snippet above).

Custom tools

The Radzen HtmlEditor allows the developer to create custom tools via the RadzenHtmlEditorCustomTool tag.

In its basic form you create a button and handle the Execute event of the HtmlEditor to implement the command.

<RadzenHtmlEditor Execute=@OnExecute>
    <RadzenHtmlEditorCustomTool CommandName="InsertToday" Icon="today" Title="Insert today" />
</RadzenHtmlEditor>
@code {
    async Task OnExecute(HtmlEditorExecuteEventArgs args)
    {
        if (args.CommandName == "InsertToday")
        {
            var date = DateTime.Now;
            await args.Editor.ExecuteCommandAsync(HtmlEditorCommands.InsertHtml, $"<strong>{date.ToLongDateString()}</strong>");
        }
    }
}

You can also specify custom UI via the Template of the RadzenHtmlEditorCustomTool.

<RadzenHtmlEditor>
    <RadzenHtmlEditorCustomTool>
        <Template Context="editor">
            <RadzenDatePicker Change=@(args => OnDateChange(args, editor)) TValue="DateTime" />
        </Template>
    </RadzenHtmlEditorCustomTool>
</RadzenHtmlEditor>
@code {
  async Task OnDateChange(DateTime? date, RadzenHtmlEditor editor)
  {
      if (date != null)
      {
          await editor.ExecuteCommandAsync(HtmlEditorCommands.InsertHtml, $"<strong>{date.Value.ToLongDateString()}</strong>");
      }
  }
}

Check the Custom Tools online demo for working implementations of custom tools.

Properties

Name Type Default Description
Value string null The value of the HtmlEditor component as HTML string.
Disabled boolean false Specifies whether the component is disabled or not.
Visible boolean true Specifies whether the component is visible or not.
UploadUrl string null The URL of the action which implements uploads.
Style string null In-line CSS style.

Methods

ExecuteCommandAsync

Executes the specified command with the optional command arguments. Uses the execCommand JavaScript API. Use the HtmlEditorCommands class to get the name of the commands.

<RadzenHtmlEditor @ref=@editor />
<button @onclick=@OnClick />

@code {
  RadzenHtmlEditor editor;

  async Task OnClick()
  {
      await editor.ExecuteCommandAsync(HtmlEditorCommands.FontName, "Arial");
  }
}

SaveSelectionAsync

Saves the current selection and cursor position. Required to later try to restore them after a command is executed.

RestoreSelectionAsync

Restores the last saved selection and cursor position.

Events

Name Type Description
Change EventCallback Change event of the HtmlEditor. The new value is provided as the event argument.
Paste EventCallback Fired when the user pastes content in the HtmlEditor. The pasted value is provided as the Html property the event argument. You can set the Html property to modify the final content which is pasted.
Execute EventCallback Fired when the user executes a command (tool). The command is provided as the CommandName property of the event argument.