0
votes

I am trying to use the RegularExpressionValidator Control in Visual Studio to validate a textbox for email address expressions.

Here's my code (very basic)

Email: 
    <input id="Text1" type="text" /><br />
    <br />
    <input id="Validate" type="button" value="Validate" runat="server" /><br />
    <br />
    <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
        ErrorMessage="RegularExpressionValidator" ControlToValidate="Validate"  
        ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:RegularExpressionValidator>

Now, when I set controlToValidate to Validate, I get the following error message:

Server Error in '/' Application.

Control 'Validate' referenced by the ControlToValidate property of 'RegularExpressionValidator1' cannot be validated. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Web.HttpException: Control 'Validate' referenced by the ControlToValidate property of 'RegularExpressionValidator1' cannot be validated.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:

[HttpException (0x80004005): Control 'Validate' referenced by the ControlToValidate property of 'RegularExpressionValidator1' cannot be validated.] System.Web.UI.WebControls.BaseValidator.CheckControlValidationProperty(String name, String propertyName) +8734357 System.Web.UI.WebControls.BaseValidator.ControlPropertiesValid() +40 System.Web.UI.WebControls.BaseValidator.get_PropertiesValid() +21 System.Web.UI.WebControls.BaseValidator.OnPreRender(EventArgs e) +27 System.Web.UI.Control.PreRenderRecursiveInternal() +80 System.Web.UI.Control.PreRenderRecursiveInternal() +171 System.Web.UI.Control.PreRenderRecursiveInternal() +171 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +842

Version Information: Microsoft .NET Framework Version:2.0.50727.3607; ASP.NET Version:2.0.50727.3082

I have tried the same mechanism before and have worked; however, this time I am on a new machine, WinXP Pro running IIS v5.1.

Any direction would be appreciated.

2

2 Answers

3
votes

You are trying to validate a button, which makes no sense, hence the exception. What you probably are meaning to do is validate the text box, in which case change your code to:

Email:&nbsp;
    <input id="Text1" type="text" runat="server" /><br />
    <br />
    <input id="Validate" type="button" value="Validate" runat="server" /><br />
    <br />
    <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
        ErrorMessage="RegularExpressionValidator" ControlToValidate="Text1"  
        ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:RegularExpressionValidator>

You need to make your Text1 control a server control so it can be validated and then change the ControlToValidate property to point to the Text1 control.

Note: Normally in ASP.NET you would have the text box control as a webserver control, like this:

<asp:TextBox ID="Text1" runat="server" />
1
votes

You can't validate buttons can you? I think you can only validate input fields. Try changing the control to validate to the actual input control.