繁体   English   中英

带表单域验证问题的asp.net自定义控件

[英]asp.net custom control with form field validation issue

我创建了一个自定义的ASP .NET控件,某些字段具有与之相关的验证冲突。 当我在页面上声明多个初始化时,就会出现问题。 当我在其中一个初始化控件上单击“提交”时,在所有其他声明的控件上进行表单验证。 由于这个问题,我无法提交表格。 这是代码

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="FinancialAdvisorHelp.ascx.cs" Inherits="FinancialAdvisorHelp" %>

<table width="316" border="0"  cellpadding="0" cellspacing="0">
  <tr>
     <td colspan="2" >
     <asp:RequiredFieldValidator 
              ID="RequiredFieldValidatorMember" runat="server" 
              ErrorMessage="Pleae enter member name. " ControlToValidate="TextBox_Name"></asp:RequiredFieldValidator>

       <asp:RequiredFieldValidator ID="RequiredFieldValidatorEmail" runat="server" ErrorMessage="Please enter email. " ControlToValidate="TextBox_email"></asp:RequiredFieldValidator>
        <asp:RegularExpressionValidator ID="RegularExpressionValidatorDarryEmail" runat="server" 
                     ControlToValidate="TextBox_email" ValidationExpression=".*@.*\..*"
                     ErrorMessage="<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;      
                                       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   
                                       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;      Invalid Email."> </asp:RegularExpressionValidator>
     </td>
     </tr>
     <tr>
    <td width="165"><p style="font-family:Palatino Linotype; font-size:12px; margin:0; padding:0;">Member Name*</p>
        <asp:TextBox ID="TextBox_Name" runat="server"  CausesValidation="True"></asp:TextBox>

        </td>
    <td width="151" align="right"><p style="font-family:Palatino Linotype; font-size:12px; margin:0 0 0 4px; padding:0; text-align:left;">E-Mail Address*</p>
      <asp:TextBox  id="TextBox_email" runat="server"  CausesValidation="True"></asp:TextBox>

      </td>
  </tr>
  <tr>
    <td colspan="2" align="right"><p style="font-family:Palatino Linotype; font-size:12px; margin:0; padding-right:50px;"><br />
      Telephone Number</p>
    <asp:TextBox id="TextBox_phone" runat="server"  CausesValidation="True"></asp:TextBox>
    </td>
    </tr>
  <tr>
    <td colspan="2"><p style="font-family:Palatino Linotype; font-size:12px; margin:0; padding:0;">Ask Darryl your question</p>
      <asp:TextBox ID="TextBox_question" runat="server" Rows="7" Columns="48" 
            style="width:310px" TextMode="MultiLine"></asp:TextBox>
       </td>
  </tr>
  <tr>
    <td colspan="2"><p style="font-size:10px; margin:0; padding:0; float:left; width:240px; line-height:12px;">Note: you should receive a response within two (2) business days.<br />
    *Required information.</p>
        <asp:ImageButton ID="ImageButton_Advisor" runat="server" alt="submit" 
            width="63" height="18" 
            style="border:0; padding:0; margin:10px 0 0 0; float:right;" ImageUrl="./images/investments/submit.gif"
             />
            <asp:HiddenField ID="HiddenFieldAdvisorEmail" Value="" runat="server" />
      </td>
      <tr><td colspan="2">
          &nbsp;</td></tr>
    </tr>
</table>

在所有导致验证的表单元素(包括“提交”按钮)上使用ValidationGroup属性。 触发验证时,它将仅检查具有指定相同ValidationGroup的其他元素。

为了确保页面上每个控件实例的唯一性,请使用UserControl的ID作为后面代码中的验证组。

RequiredFieldValidatorEmail.ValidationGroup = this.ClientID;

可以在这里找到更多信息: http : //www.dotnet-guide.com/validationgroups.html

我很难理解你的问题。

  • 验证组

听起来您可能想利用验证组 当您有多个应验证不同控件的触发器时,将使用此触发器。

  • 检查您的验证器和自定义控件

如果您仍然遇到问题,当验证器出现错误并触发验证时,似乎“什么也没有发生”(真正发生的是验证器出错并且页面只是停止了)。 您的自定义控件也可能会出现问题。

  • 检查您的验证器和ID

当我在页面上声明多个初始化时出现问题

这是什么意思 我想知道您是否在代码中动态声明控件? 这也可能是您的问题。 每个ASP.NET控件(包括验证器,自定义控件等)都需要它自己的唯一ID。 您也可以有多个验证程序来检查单个控件,但是单个验证程序不能验证多个控件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM