【问题标题】:How to prevent ASP.NET RequiredFieldValidator from doing a postback?如何防止 ASP.NET RequiredFieldValidator 进行回发?
【发布时间】:2014-06-03 21:15:30
【问题描述】:

我终其一生都无法弄清楚如何防止我的表单进行回发。我在 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(每个都有几个变体)。此外,还有一个将其包装在母版页中的表单。我只是想在提交表单之前简单地验证客户端的字段不为空。任何帮助表示赞赏。我想我公然遗漏了一些简单的东西。

【问题讨论】:

  • 能否只处理表单提交事件客户端,如果验证失败则返回false?
  • 将按钮的代码包装在更新面板中,这可能是一个很好的开始按钮单击将始终触发回发,如果我正确地关注您的问题,还请查看 __DoPostBack() 并使用 JavaScript 如果您喜欢如果失败则返回 else 做某事
  • 什么是“表单刷新后验证正在工作。”究竟是什么意思?
  • 我有一段时间没有做过 WebForms,但是 JavaScript 中的预验证是验证器的关键点之一。那么你如何验证行为,什么浏览器(-版本),是否启用了 JavaScript?
  • @HenkHolterman 很抱歉造成混乱。当页面完成回发=表单刷新时。

标签: c# asp.net validation


【解决方案1】:

将属性 EnableClientScript 设置为 True

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

【讨论】:

  • 如果我没记错的话,默认情况下应该是真的
  • 我查看了 DOM 检查器,它说找不到 JQuery 1.7.1。所以我在脚本路径中删除了 JQuery 并且错误消失了,但它仍然每次都在进行回发。超级沮丧。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2010-10-13
    • 1970-01-01
    • 2013-09-12
    • 2015-07-08
    • 2011-04-04
    • 2011-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多