Extend the forms TextField

MVC forms contain all most common fields that you need to build your form. Although you can adjust almost every setting in the designer, you may want to extend the business logic behind some of these default fields. This tutorial will demonstrate how to extend a TextField. You can use similar methodology to extend any other MVC form field.

First, you create a new class that represents you new business logic for the TextField form field:

Create a CustomTextFieldModel class that inherits from the default TextFieldModel.cs. In this example, you set a default CSS class for all TextField form fields:

C#
using Telerik.Sitefinity.Frontend.Forms.Mvc.Models.Fields.TextField;

namespace SitefinityWebApp
{
   public class CustomTextFieldModel : TextFieldModel
   {
       public override object GetViewModel(object value, Telerik.Sitefinity.Metadata.Model.IMetaField metaField)
       {

           var vm = base.GetViewModel(value, metaField) as TextFieldViewModel;

           vm.CssClass = "custom-text-field";

           return vm;

       }
   }
}

Next, replace the original implementation of the TextField form field model with the new model.
You do this using the Bootstrapper.Bootstrapper event. Place the following code in your Global.asax file:

C#
using System;
using Telerik.Sitefinity.Abstractions;
using Telerik.Sitefinity.Frontend;
using Telerik.Sitefinity.Frontend.Forms.Mvc.Models.Fields.TextField;

namespace SitefinityWebApp
{
   public class Global : System.Web.HttpApplication
   {
       protected void Application_Start(object sender, EventArgs e)
       {
           Bootstrapper.Bootstrapped += Bootstrapper_Bootstrapped;
       }

       private void Bootstrapper_Bootstrapped(object sender, EventArgs e)
       {
           FrontendModule.Current.DependencyResolver.Rebind<ITextFieldModel>().To<CustomTextFieldModel>();
       }
   }
}

As a result, you changed the default behavior of all form fields due to the many virtual implementations of all controller methods and model methods.

Want to learn more?
Enhance your Sitefinity skills by enrolling in free training sessions. Become Sitefinity certified through Progress Education Community to strengthen your professional credentials.
New to Sitefinity?