5

我的 aps 验证器遇到了以下问题。我有一个带有 asp 验证器的文本框。当用户将文本框留空并单击提交按钮时,将显示验证消息,但页面会进行回发。任何想法可能导致这种情况发生?

下面是验证器:

<asp:RequiredFieldValidator ID="valReqName" runat="server" 
    ControlToValidate="txtName" Display="Dynamic" ErrorMessage="blq blq">
</asp:RequiredFieldValidator>

<asp:TextBox ID="txtName" style="font-family:Tahoma, Geneva, sans-serif; 
    color: #4F4F4F;" runat="server">
</asp:TextBox>

非常感谢,安东

编辑

我在 UpdatePanel 中有两个选项卡。验证问题是第二个选项卡的一部分,用户在其中进行一些输入。当我删除此触发器时:

<asp:AsyncPostBackTrigger ControlID="lnkUpload" EventName="Click" />

回发问题解决了,但又出现了一个问题。好吧,至少回发被删除了。感谢所有的答案。

(lnkUpload 是第二个标签链接按钮的 id)

编辑 2

那么这里是解决方案。看来我的问题和这篇文章一样。http://jeffreypaarhuis.com/2011/08/08/validation-not-working-in-updatepanel/

4

4 回答 4

4

我正在发布解决方案,因为它可能对其他人有用。

"这就是问题所在:当在页面上加载验证器时,它会创建一些 javascript 来支持客户端验证。当您将验证器放置在默认情况下不可见的用户控件中,并且此用户控件位于更新面板中时,它没有正确创建该 javascript。这是解决方案:在更新面板之外,我在上面做了,使用虚拟验证组创建一个带有虚拟文本框的虚拟验证器,如下所示:

<%--dummy validator to make ajax validation possible--%>
<asp:RequiredFieldValidator runat="server" CssClass="hidden" ControlToValidate="dummyTextBox" ValidationGroup="dummy"></asp:RequiredFieldValidator>
<asp:TextBox runat="server" ID="dummyTextBox" CssClass="hidden"></asp:TextBox>

看来我的问题和这篇文章一样。

于 2012-07-30T14:42:15.550 回答
2

您是否尝试过此线程中的解决方案:

ASP.net RequiredFieldValidator 不阻止回发

从 web.config 中删除以下行

 <xhtmlConformance mode="Legacy"/>

“如果我删除该行,我的验证会按照我的预期进行。谷歌搜索发现了一堆关于在将 Web 应用程序从 .net 1.1 升级到 .net 3.5 时 VisualStudio 如何将该行添加到 web.config 的博客文章。

博客文章主要抱怨该字段如何干扰 .net 的 AJAX 内容,但我猜它会以类似的方式与为 RequiredFieldValidator 发出的 JavaScript 混淆。”

于 2012-07-30T07:05:00.997 回答
1

请将 ValidationGroup 添加到您的验证器(valReqName)和按钮。

于 2012-07-30T07:10:52.567 回答
0

将此属性添加到您的验证器。

 EnableClientScript="True"
于 2014-09-22T07:40:12.283 回答