基于标签可见性的验证

时间:2012-07-27 23:13:04

标签: asp.net validation button label

我喜欢根据标签的可见性在标签上添加验证,因为如果标签不可见,提交按钮会引发验证消息或错误。

我已经习惯了工具箱中的验证控件,它不允许使用此功能!

1 个答案:

答案 0 :(得分:0)

似乎asp:Label的可见性设置为false,asp.net引擎甚至不会将它放在DOM中。因此,您可以使用(html)按钮的onclick属性检查javascript,以检查标签是否在DOM中,并使用asp.net的__doPostBack() javascript函数发回到服务器,如果它在那里:

      <script type="text/javascript">
        function testMe()
        {
          var lbl = document.getElementById('lblTest');
          if(lbl == null)
            document.getElementById('msg').innerHTML = "Error";
          else
            __doPostBack('testButton');
        }
      </script>
      <asp:Label ID="lblTest" runat="server" Visible="false" Text="Hello"></asp:Label>
      <button onclick="testMe();">test</button>

说实话,如果DOM中没有标签,我认为lbl将是undefined,但Firebug显示它实际上是null。无论如何,需要注意的一点是,为了让asp.net定义__doPostBack()方法,我相信你需要在autopostback="true"的表单中进行一些控制,并且在代码隐藏中你可以检查导致Page_Load方法中回发的原因如下:

if(Request.Form["__EVENTTARGET"] == "testButton") {}