Articles → .NET → Creating Your Own Validation Control In Asp.Net
Creating Your Own Validation Control In Asp.Net
Prerequisite
- hands on experience in creating an ASP.NET web application.
- Basic knowledge of validation controls in ASP.NET.
Steps For The Creation Of Validation Control
- Create a new class and inherit the class from BaseValidator class.
- Override the method EvaluateIsValid and write validation logic inside it.
- Write properties if required.
Scenario
public class MaxItemsValidator: BaseValidator {
public MaxItemsValidator() {
}
}
public class MaxItemsValidator: BaseValidator {
public MaxItemsValidator() {
}
protected override bool EvaluateIsValid() {}
}
public int MaximumSize {
get;
set;
}
protected override bool EvaluateIsValid() {
ListBox lb = (ListBox) this.FindControl(ControlToValidate);
bool status = true;
if (lb.Items.Count > MaximumSize) {
status = false;
}
return status;
}
<%@ Register Namespace="MyValidators" TagPrefix="val" %>
<asp:ListBox runat="server" ID="lstLeftSide"
SelectionMode="Multiple">
<asp:ListItem>Skill 1</asp:ListItem>
<asp:ListItem>Skill 2</asp:ListItem>
<asp:ListItem>Skill 3</asp:ListItem>
<asp:ListItem>Skill 4</asp:ListItem>
<asp:ListItem>Skill 5</asp:ListItem>
<asp:ListItem>Skill 6</asp:ListItem>
<asp:ListItem>Skill 7</asp:ListItem>
<asp:ListItem>Skill 8</asp:ListItem>
</asp:ListBox>
<asp:Button ID="btnTransferToRight" runat="server" Text=">>"
onclick="btnTransferToRight_Click" />
<asp:Button ID="btnTransferToLeft" runat="server" Text="<<"
onclick="btnTransferToLeft_Click" />
<asp:ListBox runat="server" ID="lstRightSide"
SelectionMode="Multiple"></asp:ListBox>
<asp:Button runat="server" Text="Trigger" ID="btnTrigger"
onclick=" btnTrigger _Click" />
<val:MaxItemsValidator runat="server" ControlToValidate="lstRightSide" ErrorMessage="Max limit exceeded" MaximumSize="5"></val:MaxItemsValidator>
Click to Enlarge
Validation Control Code
using System.Web.UI.WebControls;
namespace MyValidators {
/// <summary>
/// Summary description for MaxItemsValidator
/// </summary>
public class MaxItemsValidator: BaseValidator {
public MaxItemsValidator() {
//
// TODO: Add constructor logic here
//
}
protected override bool EvaluateIsValid() {
ListBox lb = (ListBox) this.FindControl(ControlToValidate);
bool status = true;
if (lb.Items.Count > MaximumSize) {
status = false;
}
return status;
}
public int MaximumSize {
get;
set;
}
}
}
Web Form ASPX Code
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="NewValidatorConsumer.aspx.cs" Inherits="NewValidatorConsumer" %><%@ Register Namespace="MyValidators" TagPrefix="val" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ListBox runat="server" ID="lstLeftSide" SelectionMode="Multiple">
<asp:ListItem>Skill 1</asp:ListItem>
<asp:ListItem>Skill 2</asp:ListItem>
<asp:ListItem>Skill 3</asp:ListItem>
<asp:ListItem>Skill 4</asp:ListItem>
<asp:ListItem>Skill 5</asp:ListItem>
<asp:ListItem>Skill 6</asp:ListItem>
<asp:ListItem>Skill 7</asp:ListItem>
<asp:ListItem>Skill 8</asp:ListItem>
</asp:ListBox>
<asp:Button ID="btnTransferToRight" runat="server" Text=" >>"
onclick="btnTransferToRight_Click" />
<asp:Button ID="btnTransferToLeft" runat="server" Text=" <
<"
onclick="btnTransferToLeft_Click" />
<asp:ListBox runat="server" ID="lstRightSide" SelectionMode="Multiple"></asp:ListBox>
<asp:Button runat="server" Text="Trigger" ID="btnTrigger" onclick="btnTrigger_Click" />
<val:MaxItemsValidator runat="server" ControlToValidate="lstRightSide" ErrorMessage="Max limit exceeded" MaximumSize="5"></val:MaxItemsValidator>
</div>
</form>
</body>
</html>
Code Behind
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class NewValidatorConsumer: System.Web.UI.Page {
protected void btnTrigger_Click(object sender, EventArgs e) {
}
protected void btnTransferToRight_Click(object sender, EventArgs e) {
if (lstLeftSide.SelectedIndex > -1) {
lstRightSide.Items.Add(lstLeftSide.Items[lstLeftSide.SelectedIndex]);
lstLeftSide.Items.Remove(lstLeftSide.Items[lstLeftSide.SelectedIndex]);
}
}
protected void btnTransferToLeft_Click(object sender, EventArgs e) {
if (lstRightSide.SelectedIndex > -1) {
lstLeftSide.Items.Add(lstRightSide.Items[lstRightSide.SelectedIndex]);
lstRightSide.Items.Remove(lstRightSide.Items[lstRightSide.SelectedIndex]);
}
}
}