我有一个非常简单的表单,其中包含以下问题摘录:
<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标签中,并将其设置为可见。这是我有点困惑的地方。我一开始以为我可能会指定一个验证器写入其ErrorMessage的Label,但我没有这样的运气。如果我只是在Label中抛出验证器,它的格式会弄乱页面的整个布局,无论我是直接将它分配给'错误'CSS类还是只留在标签中。
为了澄清一点,在制作中,我会在一个页面上为多个Panel执行此过程,每个Panel都有一个表单元素,阻止我明确调用Panels,只是说Panel1.CssClass等。
答案 0 :(得分:1)
答案 1 :(得分:0)
如果有效,似乎很好。
使用ValidationSummary控件。或者您可以从控件继承并覆盖渲染事件。