Support us .Net Basics C# SQL ASP.NET Aarvi MVC Slides C# Programs Subscribe Download

ValidationGroups in asp.net - Part 50

Suggested Videos
Part 47 - RegularExpressionValidator
Part 48 - CustomValidator
Part 49 - ValidationSummary

In this video we will discuss about ValidationGroups and CausesValidation.

Consider the image below. 


The first problem here is that, when I click the Clear button, Form validation still happens. When I click the clear button, I just want to clear the textboxes in the Registration section. Validations doesn't make any sense here. So, how do I prevent validation from happening? 
Just, set the CausesValidation property of the button control to false. 



The second problem, is that when I click the Login button, only fields in the Login section(UserName and Password) needs to be validated. Along the same lines when I click the "Register" button, only fields in the Registration section(Email, UserName, Password and ConfirmPassword) needs to validated. If we don't use validation groups, then by default, whenever, you click a button, all the validation controls on the page get validated.

So, when you click the login button, and if you want only, the fields in the Login section(UserName and Password) to be validated, then set, the ValidationGroup property of the validation controls and the login button control to the same group name. Use a different group name for the validation controls and register button, in the registration section.



HTML of the aspx page:
<div style="font-family: Arial">
<table>
    <tr>
        <td style="vertical-align: top">
            <table style="border: 1px solid black">
                <tr>
                    <td colspan="2">
                        <h2>
                            Login</h2>
                    </td>
                </tr>
                <tr>
                    <td>
                        <b>User Name</b>
                    </td>
                    <td>
                        <asp:TextBox ID="txtUN" runat="server" Width="100px">
                        </asp:TextBox>
                        <asp:RequiredFieldValidator ID="RequiredFieldValidatorUN" 
                            runat="server" ForeColor="Red"
                            ErrorMessage="Username is required" 
                            ControlToValidate="txtUN" Display="Dynamic"
                            Text="*" ValidationGroup="Login">
                        </asp:RequiredFieldValidator>
                    </td>
                </tr>
                <tr>
                    <td>
                        <b>Password</b>
                    </td>
                    <td>
                        <asp:TextBox ID="TextBoxPWD" runat="server" Width="100px" 
                        TextMode="Password"></asp:TextBox>
                        <asp:RequiredFieldValidator ID="RequiredFieldValidatorPWD" 
                            runat="server" ForeColor="Red"
                            ErrorMessage="Password is required" 
                            ControlToValidate="TextBoxPWD" Display="Dynamic"
                            Text="*" ValidationGroup="Login">
                        </asp:RequiredFieldValidator>
                    </td>
                </tr>
                <tr>
                    <td colspan="2">
                        <asp:Button ID="btnLogin" ValidationGroup="Login" 
                        runat="server" Text="Login" 
                        onclick="btnLogin_Click" />
                    </td>
                </tr>
                <tr>
                    <td colspan="2">
                        <asp:ValidationSummary ValidationGroup="Login" 
                            ID="ValidationSummary2" runat="server" 
                            ForeColor="Red" HeaderText="Page Errors"
                            ShowMessageBox="True" ShowSummary="true" 
                            DisplayMode="List" />
                    </td>
                </tr>
                <tr>
                    <td colspan="2">
                        <asp:Label ID="lblLoginStatus" runat="server" 
                        Font-Bold="true"></asp:Label>
                    </td>
                </tr>
            </table>
        </td>
        <td>
            &nbsp;&nbsp;
        </td>
        <td>
            <table style="border: 1px solid black">
                <tr>
                    <td colspan="2">
                        <h2>
                            User Registration</h2>
                    </td>
                </tr>
                <tr>
                    <td>
                        <b>Email</b>
                    </td>
                    <td>
                        <asp:TextBox ID="txtEmail" runat="server" Width="100px">
                        </asp:TextBox>
                        <asp:RequiredFieldValidator ID="RequiredFieldValidatorEmail" 
                            runat="server" ForeColor="Red"
                            ErrorMessage="Email is required" 
                            ControlToValidate="txtEmail" Display="Dynamic"
                            Text="*" ValidationGroup="Registration">
                        </asp:RequiredFieldValidator>
                        <asp:RegularExpressionValidator 
                            ID="RegularExpressionValidatorEmail" 
                            runat="server"
                            ErrorMessage="Invalid Email Format" 
                            ControlToValidate="txtEmail" ForeColor="Red"
                            ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" 
                            Text="*"
                            ValidationGroup="Registration">
                        </asp:RegularExpressionValidator>
                    </td>
                </tr>
                <tr>
                    <td>
                        <b>User Name</b>
                    </td>
                    <td>
                        <asp:TextBox ID="txtUserName" runat="server" Width="100px">
                        </asp:TextBox>
                        <asp:RequiredFieldValidator ID="RequiredFieldValidatorUserName" 
                            runat="server" ForeColor="Red"
                            ErrorMessage="Username is required" 
                            ControlToValidate="txtUserName" Display="Dynamic"
                            Text="*" ValidationGroup="Registration">
                        </asp:RequiredFieldValidator>
                    </td>
                </tr>
                <tr>
                    <td>
                        <b>Password</b>
                    </td>
                    <td>
                        <asp:TextBox ID="txtPassword" runat="server" 
                        Width="100px" TextMode="Password"></asp:TextBox>
                        <asp:RequiredFieldValidator ID="RequiredFieldValidatorPassword" 
                            runat="server" ForeColor="Red"
                            ErrorMessage="Password is required" 
                            ControlToValidate="txtPassword" Display="Dynamic"
                            Text="*" ValidationGroup="Registration">
                        </asp:RequiredFieldValidator>
                    </td>
                </tr>
                <tr>
                    <td>
                        <b>Confirm Password</b>
                    </td>
                    <td>
                        <asp:TextBox ID="txtConfirmPassword" runat="server" 
                            TextMode="Password" Width="100px"></asp:TextBox>
                        <asp:CompareValidator ID="CompareValidatorPassword" 
                            runat="server" 
                            ErrorMessage="Password and Confirm Password must match"
                            ControlToValidate="txtConfirmPassword" 
                            ControlToCompare="txtPassword" Operator="Equal"
                            Type="String" ForeColor="Red" Text="*" 
                            ValidationGroup="Registration">
                        </asp:CompareValidator>
                    </td>
                </tr>
                <tr>
                    <td colspan="2">
                        <asp:Button ID="btnSubmit" runat="server" Text="Register" 
                        OnClick="btnSubmit_Click" ValidationGroup="Registration"/>
                        &nbsp;
                        <asp:Button ID="btnClear" runat="server" onclick="btnClear_Click" 
                        CausesValidation="false" Text="Clear" />
                    </td>
                </tr>
                <tr>
                    <td colspan="2">
                        <asp:ValidationSummary ID="ValidationSummary1" runat="server" 
                            ForeColor="Red" HeaderText="Page Errors" ShowMessageBox="True" 
                            ShowSummary="true" DisplayMode="List" 
                            ValidationGroup="Registration"/>
                    </td>
                </tr>
                <tr>
                    <td colspan="2">
                        <asp:Label ID="lblStatus" runat="server" 
                        Font-Bold="true"></asp:Label>
                    </td>
                </tr>
            </table>
        </td>
    </tr>
</table>
</div>

Code-Behind:
protected void btnSubmit_Click(object sender, EventArgs e)
{
    if (Page.IsValid)
    {
        lblStatus.Text = "No registration validation Errors";
        lblStatus.ForeColor = System.Drawing.Color.Green;
    }
    else
    {
        lblStatus.Text = "Registration validation Errors";
        lblStatus.ForeColor = System.Drawing.Color.Red;
    }
}

protected void btnClear_Click(object sender, EventArgs e)
{
    txtEmail.Text = "";
    txtUserName.Text = "";
    txtPassword.Text = "";
    txtConfirmPassword.Text = "";
}

protected void btnLogin_Click(object sender, EventArgs e)
{
    if (Page.IsValid)
    {
        lblLoginStatus.Text = "No Login Validation Errors";
        lblStatus.ForeColor = System.Drawing.Color.Green;
    }
    else
    {
        lblStatus.Text = "Login validation errors";
        lblStatus.ForeColor = System.Drawing.Color.Red;
    }
}

2 comments:

  1. Is there a way to clear the textboxes as a group, of each section in the code-behind. rather than doing it individually?
    i.e a shorter version of this code;
    txtEmail.Text = "";
    txtUserName.Text = "";
    txtPassword.Text = "";
    txtConfirmPassword.Text = "";

    ReplyDelete
  2. Thank you very much for this tutorial

    ReplyDelete

It would be great if you can help share these free resources