我不能为我的生活弄清楚如何防止我的表格做回发。我在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(每种都有几种变体)。此外,还有一个表单将其包装在母版页中。我只是想在提交表单之前简单地验证客户端上的字段是否为空。任何帮助表示赞赏。我认为我公然缺少一些简单的东西。
答案 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来避免页面刷新。验证失败时,用户界面更清晰,更多控制。感谢大家的投入。