【发布时间】:2010-11-27 03:59:27
【问题描述】:
我有一个非常简单的表格,带有以下麻烦的sn-p:
<asp:Panel class="normal" ID="Panel1" runat="server">
<strong><asp:Label ID="Panel1Error" class="error" Visible="false" runat="server"/></strong>
<label for="TextBox1"><em>*</em> Don't leave this blank</label>
<asp:TextBox ID="TextBox1" runat="server" />
<asp:RequiredFieldValidator ID="TextBox1RFV" runat="server"
ControlToValidate="TextBox1" ErrorMessage="This field cannot be blank."
Display="None" />
<--- other validators --->
</asp:Panel>
当页面验证失败时,我想做两件事:
更改 Panel1 的样式(更改为显示不同颜色以指示错误的样式)。我可以通过在 Page_Load 中调用 Page.Validate 来做到这一点,然后遍历 Page.Validators,获取每个验证器的父控件,将其转换为 Panel,然后设置 .CssClass 似乎不是一个极好的解决方案,但它得到了工作完成 - 有没有更好的方法?
我想将抛出的任何验证错误放入 Panel1Error 标签中,并将其设置为可见。这是我有点困惑的地方。起初我以为我可以指定验证器写入错误消息的标签,但我没有这样的运气。如果我只是将验证器扔到标签内,它的格式会弄乱页面的整个布局,无论我是直接为其分配“错误”CSS 类还是将其留在标签中。
澄清一下,在生产中,我会为一个页面上的多个面板执行此过程,每个面板都有一个表单元素,从而阻止我显式调用面板并只说 Panel1.CssClass 等。
【问题讨论】: