我创建了一个自定义的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>
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">
</td></tr>
</tr>
</table>
答案 0 :(得分:1)
对导致验证的所有表单元素使用ValidationGroup属性,包括提交按钮。触发验证时,它只会检查指定了相同ValidationGroup的其他元素。
要确保它在页面上每个控件实例中都是唯一的,请使用UserControl的ID作为后面代码中的验证组。
RequiredFieldValidatorEmail.ValidationGroup = this.ClientID;
可在此处找到更多信息:http://www.dotnet-guide.com/validationgroups.html
答案 1 :(得分:0)
我很难解读你的问题。
听起来您可能想要利用 validation groups 。当您有多个应该验证不同控件的触发器时,这就是使用它。
如果您仍然遇到问题,当验证程序出现错误并触发验证时,似乎“没有任何反应”(实际发生的情况是验证程序错误输出且页面类型刚刚停止)。您的自定义控件也可能存在问题。
当我宣布更多时,问题就出现了 而不是页面上的一次初始化
这是什么意思?我想知道你是否在代码中动态声明控件?这也可能是你的问题。每个ASP.NET控件(包括验证器,自定义控件......)都需要它自己的唯一ID。您还可以使用多个验证程序检查单个控件,但单个验证程序无法验证多个控件。