[英]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>
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>
在所有导致验证的表单元素(包括“提交”按钮)上使用ValidationGroup属性。 触发验证时,它将仅检查具有指定相同ValidationGroup的其他元素。
为了确保页面上每个控件实例的唯一性,请使用UserControl的ID作为后面代码中的验证组。
RequiredFieldValidatorEmail.ValidationGroup = this.ClientID;
可以在这里找到更多信息: http : //www.dotnet-guide.com/validationgroups.html
我很难理解你的问题。
听起来您可能想利用验证组 。 当您有多个应验证不同控件的触发器时,将使用此触发器。
如果您仍然遇到问题,当验证器出现错误并触发验证时,似乎“什么也没有发生”(真正发生的是验证器出错并且页面只是停止了)。 您的自定义控件也可能会出现问题。
当我在页面上声明多个初始化时出现问题
这是什么意思 我想知道您是否在代码中动态声明控件? 这也可能是您的问题。 每个ASP.NET控件(包括验证器,自定义控件等)都需要它自己的唯一ID。 您也可以有多个验证程序来检查单个控件,但是单个验证程序不能验证多个控件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.