【问题标题】:Use of RegularExpressionValidator in MS .Net Framework在 MS .Net 框架中使用 RegularExpressionValidator
【发布时间】:2010-04-26 15:29:44
【问题描述】:

我正在尝试使用 Visual Studio 中的 RegularExpressionValidator 控件来验证电子邮件地址表达式的文本框。

这是我的代码(非常基本)

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>

现在,当我将 controlToValidate 设置为 Validate 时,我收到以下错误消息:

Server Error in '/' Application.

“RegularExpressionValidator1”的 ControlToValidate 属性引用的控件“Validate”无法验证。 说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.Web.HttpException:无法验证由“RegularExpressionValidator1”的 ControlToValidate 属性引用的控件“Validate”。

来源错误:

在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。

堆栈跟踪:

[HttpException (0x80004005): 无法验证由“RegularExpressionValidator1”的 ControlToValidate 属性引用的控件“Validate”。] System.Web.UI.WebControls.BaseValidator.CheckControlValidationProperty(字符串名称,字符串属性名称)+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

版本信息:Microsoft .NET Framework 版本:2.0.50727.3607; ASP.NET 版本:2.0.50727.3082

我之前尝试过相同的机制并且成功了;但是,这次我在一台新机器上运行 IIS v5.1 的 WinXP Pro。

任何方向都将不胜感激。

【问题讨论】:

    标签: .net asp.net


    【解决方案1】:

    您正在尝试验证一个按钮,这没有任何意义,因此出现了异常。您可能想要做的是验证文本框,在这种情况下将您的代码更改为:

    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>
    

    您需要使您的Text1 控件成为服务器控件,以便对其进行验证,然后将ControlToValidate 属性更改为指向Text1 控件。

    注意:通常在 ASP.NET 中,您会将文本框控件作为 Web 服务器控件,如下所示:

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

    【讨论】:

    • 不确定我为什么要验证按钮,但文本字段现在可以使用。非常感谢!
    【解决方案2】:

    您不能验证按钮是吗?我认为您只能验证输入字段。尝试更改控件以验证实际输入控件。

    【讨论】:

      猜你喜欢
      • 2013-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多