ASP.NET隐藏了requiredfieldvalidator上的Panel

时间:2012-11-02 06:11:22

标签: c# asp.net web requiredfieldvalidator

我有一个简单的网页,几乎没有asp面板。我从数据库中搜索记录,这些面板在页面上可见 但是,当我在文本框中输入一个无效值来检查RequiredFieldValidator是否正常工作时,会显示错误消息。但是,表格中已经显示的面板不会被隐藏 我明白,因为表单没有回发帖子,所以这些面板不会被设置为不可见。如果requiredfieldvalitor抛出错误,可以指导我如何隐藏这些面板吗?

2 个答案:

答案 0 :(得分:0)

您必须禁用ClientValidation以允许回发,或使用自定义JavaScript。如果有明显的回发问题,您可以轻松使用UpdatePanels

答案 1 :(得分:0)

通过验证器的data-dependentClass附加依赖元素,并将此脚本放在表单结束标记

下面
 <form id="form1" runat="server">
      <asp:TextBox ID="TextBox1" runat="server" />
      <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox1"
           Text="*" data-dependentClass="addressValidation"  />
      <br />
      <asp:TextBox ID="TextBox2" runat="server" />
      <br />
      <asp:Button runat="server" Text="Click Me" />
      <hr />
      <asp:Panel runat="server" ID="Panel1" CssClass="addressValidation">
           Rendered at:
           <%= DateTime.Now.ToLongTimeString() %>
      </asp:Panel>
 </form>
 <script type="text/javascript">
      var originalValidatorUpdateDisplay = ValidatorUpdateDisplay;
      ValidatorUpdateDisplay = function (val) {
           originalValidatorUpdateDisplay.call(null, val);

           var dependentClass = val.getAttribute("data-dependentClass");
           if (dependentClass) {
                elements = document.getElementsByClassName(dependentClass);
                for (var i = 0; i < elements.length; i++) {
                     elements[i].style.display = val.isvalid === false ? "none" : "";
                }
           }
      }
 </script>