Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
See more: C# ASP.NET
I have an asp.net form consisting of several text fields and a drop down list and a register button.
 
The problem: When I apply client side validators to the text fields and drop down, the button click event is inhibited (for ALL buttons on page; not just for submit button but also for global navigation buttons inheriting from a MasterPage). Some fields have more than one validator (e.g. required field and reg ex).
 
When I comment out ANY of the validators, all buttons' click events function as expected.
 
I seems like a crazy work aroung to insert an extra unwanted 'dummy' validator just to comment out but it only seems to work with n-1 validators (i.e. no matter how many validators I have on the page, it will only work with ANY one of them commented out).
 
There are links all over the web to an article about this exact topic on aspalliance.com but sadly, the link is broken. Can anybody please suggest a solution?
 
Thanks, Daf.
 
Markup code as follows:
 

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPages/Admin.Master" AutoEventWireup="true" CodeBehind="RegisterUser.aspx.cs" Inherits="LectureQuestions.Interface.Admin.RegisterUser" %>
<asp:Content ID="Content1" ContentPlaceHolderID="PageTitle" runat="server">Register New User
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="TitleTxt" runat="server">Register New User
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="MainContent" runat="server">
    <table ID="tblInputField"  runat="server" width="100%" cellspacing="15">
            <tr>
                <td width="10%"></td>
                <td width="20%">First Name</td>
                <td width="60%">
                    <asp:TextBox ID="txtFirstName" runat="server" Width="98%"></asp:TextBox>
                </td>
                <td width="10%">
                    <asp:RequiredFieldValidator ID="txtFirstNameRequired" runat="server" Display="Dynamic"
                        ValidationGroup="InputValidate" ControlToValidate="txtFirstName" ErrorMessage="*" ForeColor="Red"></asp:RequiredFieldValidator>
                </td>
            </tr>
            <tr>
                <td width="10%"></td>
                <td width="20%">Last Name</td>
                <td width="60%">
                    <asp:TextBox ID="txtLastName" runat="server" Width="98%"></asp:TextBox>
                </td>
                <td width="10%">
                    <asp:RequiredFieldValidator ID="txtLastNameRequired" runat="server" Display="Dynamic"
                        ValidationGroup="InputValidate" ControlToValidate="txtLastName" ErrorMessage="*" ForeColor="Red"></asp:RequiredFieldValidator>
                </td>
            </tr>
            <tr>
                <td width="10%"></td>
                <td width="20%">E-mail</td>
                <td width="60%">
                    <asp:TextBox ID="txtEmail" runat="server" Width="98%"></asp:TextBox>
                </td>
                <td width="10%">
                    <asp:RequiredFieldValidator ID="txtEmailRequired" runat="server" Display="Dynamic"
                        ValidationGroup="InputValidate" ControlToValidate="txtEmail" ErrorMessage="*" ForeColor="Red"></asp:RequiredFieldValidator>
                    <asp:RegularExpressionValidator ID="txtEmailRx" runat="server" Display="Dynamic"
                        ValidationGroup="InputValidate" ControlToValidate="txtEmail" ErrorMessage="*" ForeColor="Red"
                        ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:RegularExpressionValidator>
                </td>
            </tr>
            <tr>
                <td width="10%"></td>
                <td width="20%">Phone</td>
                <td width="60%">
                    <asp:TextBox ID="txtPhone" runat="server" Width="98%"></asp:TextBox>
                </td>
                <td width="10%">
                    <asp:RequiredFieldValidator ID="txtPhoneRequired" runat="server" Display="Dynamic"
                        ValidationGroup="InputValidate" ControlToValidate="txtPhone" ErrorMessage="*" ForeColor="Red"></asp:RequiredFieldValidator>
                    <asp:RegularExpressionValidator ID="txtPhoneRx" runat="server" Display="Dynamic"
                        ValidationGroup="InputValidate" ControlToValidate="txtPhone" ErrorMessage="*" ForeColor="Red"
                        ValidationExpression="^[0]\d{1,2}[\s,-]\d{5,7}$"></asp:RegularExpressionValidator>
                    <!-- solve validation probs -->
                </td>
            </tr>
            <tr>
                <td width="10%"></td>
                <td width="20%">Password</td>
                <td width="60%">
                    <asp:TextBox ID="txtPassword" runat="server" Width="98%"></asp:TextBox>
                </td>
                <td width="10%">
                    <asp:RequiredFieldValidator ID="txtPasswordRequired" runat="server" Display="Dynamic"
                        ValidationGroup="InputValidate" ControlToValidate="txtPassword" ErrorMessage="*" ForeColor="Red"></asp:RequiredFieldValidator>
                </td>
            </tr>
            <tr>
                <td width="10%"></td>
                <td width="20%">User Type</td>
                <td width="60%">
                    <asp:DropDownList ID="txtUserType" runat="server" Width="99.5%">
                        <asp:ListItem></asp:ListItem>
                        <asp:ListItem>Student</asp:ListItem>
                        <asp:ListItem>Lecturer</asp:ListItem>
                        <asp:ListItem>Admin</asp:ListItem>
                    </asp:DropDownList>
                </td>
                <td width="10%">
                    <asp:RequiredFieldValidator ID="txtUserTypeRequired" runat="server" Display="Dynamic"
                        ValidationGroup="InputValidate" ControlToValidate="txtUserType" ErrorMessage="*" ForeColor="Red"></asp:RequiredFieldValidator>
                </td>
            </tr>
            <tr>
                <td width="10%"></td>
                <td width="20%">Course</td>
                <td width="60%">
                    <asp:DropDownList ID="txtCourse" runat="server" Width="99.5%">
                        </asp:DropDownList>
                </td>
                <td width="10%"></td>
            </tr>
        </table>
 
        <table ID="tblAllValidationMsg"  runat="server" width="100%" cellspacing="5">
            <tr>
                <td width="10%"></td>
                <td width="80%" align="center">
                    <asp:Label id="allValidationMsg" runat="server" height="22px" ForeColor="Red"></asp:Label>
                </td>
                <td width="10%"></td>
            </tr>
        </table>
 
        <table ID="tblCommandButtons"  runat="server" width="100%" cellspacing="10">
            <tr>
                <td width="25%"></td>
                <td width="25%" align="right">
                    <asp:Button class="navbutton" ID="btnRegister" runat="server" causevalidation="true"
                        ValidationGroup="InputValidate" Text="Register User" OnClick="btnRegister_Click" />
                </td>
                <td width="25%" align="left">
                    <asp:Button class="navbutton" ID="btnCancel" runat="server" causevalidation="false"
                        Text="Cancel" onclick="btnCancel_Click" />
                </td>
                <td width="25x%"></td>
            </tr>
        </table>
</asp:Content>
Posted 4-Jan-13 14:10pm

1 solution

Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

The solution is to work out the method that calls the validators in javascript and conditionally submits the page, and bypass it in your click events.
 
Or you could use the CausesValidation[^] property. Or you can use validation groups, apparently.
  Permalink  
Comments
Sandeep Mewara at 5-Jan-13 0:48am
   
Comment from OP:
I'd tried ValidationGroup and CausesValidation property with no effect.
In the end, I inserted a 'dummy' CustomValidator with no ControlToValidate and a blank ErrorMessage and commented it out.

Page now works as it should. I'm fairly new to ASP.net and don't understand why this should be but two lines of commented-out markup is an acceptable compromise.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 mhegazy94 460
1 Sergey Alexandrovich Kryukov 430
2 Ravi Bhavnani 190
3 Kornfeld Eliyahu Peter 185
4 Shemeemsha RA 160
0 Sergey Alexandrovich Kryukov 7,135
1 OriginalGriff 6,801
2 CPallini 5,350
3 George Jonsson 3,619
4 Gihan Liyanage 2,797


Advertise | Privacy | Mobile
Web02 | 2.8.140922.1 | Last Updated 4 Jan 2013
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100