Tutorial: Extend the TextField of MVC forms
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.
PREREQUISITES:
- You installed the Feather module.
- You have references to Telerik.Sitefinity.Frontend and Telerik.Sitefinity.Frontend.Forms DLL files. This is an automatic process if you installed Feather and the Feather.Core packages via NuGet. If not, just add references from these DLL files, as they are already in your SitefinityWebApp.bin folder.
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:
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.Initialized event. Place the following code in your Global.asax file:
protected
void
Application_Start(
object
sender, EventArgs e)
{
Bootstrapper.Initialized +=
this
.Bootstrapper_Initialized;
}
private
void
Bootstrapper_Initialized(
object
sender, Telerik.Sitefinity.Data.ExecutedEventArgs e)
{
if
(e.CommandName ==
"Bootstrapped"
)
{
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.