如何防止ASP.NET RequiredFieldValidator进行回发?

时间:2014-06-03 21:15:31

标签: c# asp.net validation

我不能为我的生活弄清楚如何防止我的表格做回发。我在ASP.NET 4.5和C#(Web应用程序项目,而不是网站)。我已经在几个版本的ASP.NET中有效地完成了这项工作,但我无法弄清楚如何在简单的必需字段验证上阻止回发。表单刷新后验证工作正常。这是我的代码:

<label for="MainContent_txtName" class="required">Name</label>
<asp:TextBox ID="txtName" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="reqName" runat="server" ErrorMessage="Required field" ControlToValidate="txtName" EnableClientScript="true" ValidationGroup="contact" />

<label for="MainContent_txtEmail" class="required">Email Address</label>
<asp:TextBox ID="txtEmail" runat="server"></asp:TextBox>

<label for="MainContent_txtPhone">Phone Number</label>
<asp:TextBox ID="txtPhone" runat="server"></asp:TextBox>

<label for="MainContent_txtComment" class="required">Question or Comment</label>
<asp:TextBox ID="txtComment" TextMode="multiline" runat="server" />

<asp:Button ID="btnSubmit" runat="server" Text="submit" OnClick="btnSubmit_Click" CausesValidation="true" ValidationGroup="contact"  />

我尝试过没有ValidationGroup,CausesValidation和EnableClientScript(每种都有几种变体)。此外,还有一个表单将其包装在母版页中。我只是想在提交表单之前简单地验证客户端上的字段是否为空。任何帮助表示赞赏。我认为我公然缺少一些简单的东西。

2 个答案:

答案 0 :(得分:0)

将属性EnableClientScript设置为True

<asp:requiredfieldvalidator id="TextBoxRequiredValidator" controltovalidate="NumberTextBox" enableclientscript="True" display="Dynamic" errormessage="Please enter a value." text="*" runat="server"/>

答案 1 :(得分:0)

我刚决定不尝试在客户端完成任何事情,并使用Page.IsValid和.IsValid在服务器端进行验证。另外,我正在使用ScriptManager / UpdatePanel来避免页面刷新。验证失败时,用户界面更清晰,更多控制。感谢大家的投入。