Header Ads

ASP.NET MVC5: Rich Text (WYSIWYG) Editor

An interactive website requires interactive components in it for the target audience to interact in a more user friendly way.
Getting long rich content kind of text from the target audience adds a responsibility towards the website to do half of the work for the user e.g. auto spell checker, allowing user to place inline images or links, content indentation etc. These features can be provided individually, but, it will become more cumbersome for the website developer to develop each and every single feature from scratch. For, such matter many amazing affordable rich text editor plugins are available for commercial use.

Today, I shall be demonstrating how to integrate a rich text editor into ASP.NET MVC5 environment. I will be using Summernote Rich Text (WYSIWYG) Editor. This particular plugin is simple to use and the best part that I like about it is that it allows inline images which by far I am at least unable to find at free of cost, simple to use and working inline image media in different plugins that I have evaluated.

Following are some prerequisites before you proceed further in this tutorial:

1) Knowledge of ASP.NET MVC5.
2) Knowledge of HTML.
3) Knowledge of JavaScript. 
4) Knowledge of Bootstrap. 
5) Knowledge of Jquery. 
6) Knowledge of C# Programming.

The running working solution source code is being developed in Microsoft Visual Studio 2015 Enterprise.

Download Now!

Now, let's begin.

1) Create new MVC web project name it "RichTextEditor".

2) In "Model" folder, create "RichTextEditorViewModel.cs" file and place the following code in it i.e.

...

public class RichTextEditorViewModel { [AllowHtml] [Display(Name = "Message")] public string Message { get; set; } }
...

In the above code, I have created a simple model with message property only. This variable will contain all the text that user will write inside the rich text editor. The important part here is the "[AllowHtml]" attribute, this will let the message variable save all html generated content by the rich text editor which includes any formatting or media content. The important point to be noted here that, we cannot use "[Require]" attribute here with rich text editor, we can however, achieve it easily via code when posting the content to controller, I am not going to show that here though.  

3) Create ''Home->Index.cshtml" file and replace it with the following code i.e.

@using RichTextEditor.Models  
 @model RichTextEditorViewModel  
 @{  
   ViewBag.Title = "ASP.NET MVC5: Rich Text Editor Plugin";  
 }  
 <h2>@ViewBag.Title.</h2>  
 <div class="row">  
   <div class="col-md-12">  
     <section id="loginForm">  
       @using (Html.BeginForm("Index", "Home", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { @class = "form-horizontal", role = "form" }))  
       {  
         @Html.AntiForgeryToken()  
         <h5>  
           <i class="fa fa-link" aria-hidden="true"></i>  
           <a href="http://summernote.org/">Summernote Rich Text WYSIWYG Editor</a>  
         </h5>  
         <hr />  
         <div class="form-group">  
           <label class="col-md-4 control-label">Message </label>  
           <div class="col-md-8">  
             <div class="input-group">  
               @Html.TextAreaFor(m => m.Message, new { rows = "20", style = "resize:none;width:400px;", placeholder = Html.DisplayNameFor(m => m.Message), @class = "form-control input-lg textarea-editor" })  
             </div>  
           </div>  
         </div>  
         @*<div class="form-group">  
             <div class="col-md-offset-2 col-md-10">  
               <input type="submit" value="Log in" class="btn btn-default" />  
             </div>  
           </div>*@  
       }  
     </section>  
   </div>  
 </div>  
 @section Scripts  
 {  
   <script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.2/summernote.js"></script>  
   @Scripts.Render("~/bundles/Script-custom-editor")  
   <link href="http://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.2/summernote.css" rel="stylesheet">  
 }  

 In the above code, I have created my textarea control and apply the Summernote Rich Text (WYSIWYG) Editor plugin. I have also, included in this page the reference JavaScript and CSS style files for this plugin.  

4) In "Scripts" folder create a new file and name it "script-custom-editor.js". Place following code into this JavaScript file i.e.

$(document).ready(function ()  
 {  
    // Initialize Editor   
   $('.textarea-editor').summernote(  
   {  
     height: 300,         // set editor height  
     minHeight: null,       // set minimum height of editor  
     maxHeight: null,       // set maximum height of editor  
     focus: true         // set focus to editable area after initializing summernote  
   });  
 });  

In the above code, I have attached the Summernote Rich Text (WYSIWYG) Editor plugin with my textarea HTML control, which will capture rich text from the end-user. I have used basic settings for the plugin.  

5) Now, execute the project and you will be able to see the following i.e.


Conclusion

In this tutorial, you are able to learn about the importance, usage and advantage of rich text editor. You will also, learn about using Summernote Rich Text (WYSIWYG) Editor plugin with ASP.NET MVC5.