【发布时间】:2016-01-15 16:46:53
【问题描述】:
我在同一个 aspx 页面中使用了两个联系表单,一个有 4 个文本框控件(名称-电子邮件-主题-正文)和发送按钮控件。 第二个表单有2个文本框控件和发送按钮,所有(除了第二个表单的第二个文本框)都有验证控件(requiredFieldValidator)。
这是第一个按钮点击事件中的代码:
protected void ButtonSend_Click(object sender, EventArgs e)
{
if(Page.IsValid)
{
LabelIRespond.Visible = true;
.....
}
}
第二个按钮点击事件中没有代码。 问题是,当第一个表单验证成功而第二个表单未验证时,点击事件中的代码未执行。并出现第二种形式的错误信息。他们表现得好像他们是一种形式!
两种形式的标记:
<section id="sendSection">
<div id="contactMe">
<h1>Contact me</h1>
</div>
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<h4>Send me a message:</h4>
<table class="auto-style1">
<tr>
<td class="auto-style8">
<asp:TextBox ID="TextBoxEmail" placeholder="Your Email address" runat="server" BackColor="#D4D8DF" Font-Names="Century Gothic" CssClass="txtbxs" Height="25px" Width="250px"></asp:TextBox>
</td>
<td>
<asp:RequiredFieldValidator ID="RequiredFieldValidatorEmail" runat="server" ControlToValidate="TextBoxEmail" CssClass="ErrorMessage" Display="Dynamic" ErrorMessage="Please enter your Email address">*</asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="TextBoxEmail" CssClass="ErrorMessage" Display="Dynamic" ErrorMessage="RegularExpressionValidator" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*">*</asp:RegularExpressionValidator>
</td>
</tr>
<tr>
<td class="auto-style8">
<asp:TextBox ID="TextBoxName" placeholder="Your name" runat="server" BackColor="#D4D8DF" Font-Names="Century Gothic" CssClass="txtbxs" Height="25px" Width="250px"></asp:TextBox>
</td>
<td>
<asp:RequiredFieldValidator ID="RequiredFieldValidatorName" runat="server" ControlToValidate="TextBoxName" CssClass="ErrorMessage" Display="Dynamic" ErrorMessage="RequiredFieldValidator">*</asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td class="auto-style5">
<asp:TextBox ID="TextBoxSubject" placeholder="Subject" runat="server" BackColor="#D4D8DF" Font-Names="Century Gothic" CssClass="txtbxs" Height="25px" Width="250px"></asp:TextBox>
</td>
<td class="auto-style3">
<asp:RequiredFieldValidator ID="RequiredFieldValidatorSubject" runat="server" ControlToValidate="TextBoxSubject" CssClass="ErrorMessage" Display="Dynamic" ErrorMessage="RequiredFieldValidator">*</asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td class="auto-style6">
<asp:TextBox ID="TextBoxBody" placeholder="What do you want to tell me?" runat="server" BackColor="#D4D8DF" TextMode="MultiLine" Font-Names="Century Gothic" CssClass="txtbxs" Height="180px" Width="370px"></asp:TextBox>
</td>
<td class="auto-style2">
<asp:RequiredFieldValidator ID="RequiredFieldValidatorBody" runat="server" ControlToValidate="TextBoxBody" CssClass="ErrorMessage" Display="Dynamic" ErrorMessage="Type your message">*</asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td class="auto-style8">
<asp:Button ID="ButtonSend" runat="server" Text="Send" CssClass="btnSend" Width="80px" OnClick="ButtonSend_Click" UseSubmitBehavior="False" Font-Names="Century Gothic" />
</td>
<td>
</td>
</tr>
<tr>
<td class="auto-style8">
<asp:Label ID="LabelIRespond" runat="server" Text="Thanks, your message has been sent. I'll respond ASAP." Visible="False"></asp:Label>
</td>
<td>
</td>
</tr>
</table>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="UpdatePanel1">
<ProgressTemplate>
<div class="wait">
</div>
</ProgressTemplate>
</asp:UpdateProgress>
</section>
<div class="split"></div>
<section id="viewCVSection">
<div id="check">
<h1>Check out my CV</h1>
</div>
<div class="cvForm">
<table class="auto-style1">
<tr>
<td class="auto-style4">
<asp:TextBox ID="TextBoxEmail2" placeholder="Company Email address" CssClass="txtbxs" runat="server" BackColor="#D4D8DF" Height="25px" Width="250px" Font-Names="Century Gothic"></asp:TextBox>
</td>
<td>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBoxEmail2" CssClass="ErrorMessage" Display="Dynamic" ErrorMessage="RequiredFieldValidator">*</asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator2" runat="server" ControlToValidate="TextBoxEmail2" CssClass="ErrorMessage" Display="Dynamic" ErrorMessage="RegularExpressionValidator" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*">*</asp:RegularExpressionValidator>
</td>
</tr>
<tr>
<td class="auto-style4">
<asp:TextBox ID="TextBoxCompany" placeholder="Company name" CssClass="txtbxs" runat="server" BackColor="#D4D8DF" Height="25px" Width="250px" Font-Names="Century Gothic"></asp:TextBox>
</td>
<td> </td>
</tr>
<tr>
<td class="auto-style4">
<asp:Button ID="Button1" CssClass="sendCV" runat="server" Text="Request CV" Font-Names="Century Gothic" OnClick="Button1_Click" />
</td>
<td> </td>
</tr>
</table>
</div>
</section>
【问题讨论】:
-
您需要使用我的回答中提到的 ValidationGroup 。将第一个联系表单按钮及其验证器的 ValidationGroup 设置为
FirstGroup,然后将第二个联系表单按钮和验证器的相同属性设置为SecondGroup。然后就可以了。 -
另外
ButtonSend1在哪个联系表中? -
第一种形式。我已经编辑了我的问题,现在它包含两种形式的标记
-
你能按照我在回答中所说的话吗?
标签: c# asp.net validation