Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更改控件';基于验证的s样式(ASP.NET)_C#_Asp.net - Fatal编程技术网

C# 更改控件';基于验证的s样式(ASP.NET)

C# 更改控件';基于验证的s样式(ASP.NET),c#,asp.net,C#,Asp.net,我有一个非常简单的表单,其中包含以下有问题的片段: <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>

我有一个非常简单的表单,其中包含以下有问题的片段:

<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上迭代,获取每个验证器的父控件,将其转换为面板,然后设置.CssClass似乎不是一个极好的解决方案,但它完成了任务-有更好的方法吗

  • 我想获取抛出的任何验证错误,并将它们放在Panel1错误标签中,并将其设置为可见。这就是我有点困惑的地方。起初我以为我可以指定验证器写入错误消息的标签,但我没有这样的运气。如果我只是将验证器扔到标签中,它的格式会弄乱页面的整个布局,不管我是直接将其分配给“error”CSS类还是将其留在标签中

  • 为了澄清一下,在生产中,我会对一个页面上的多个面板执行此过程,每个面板都有一个表单元素,防止我显式调用面板,只说Panel1.CssClass,等等

  • 如果它起作用的话,看起来不错

  • 使用控件。也可以从控件继承并覆盖渲染事件

  • 如果它起作用的话,看起来不错

  • 使用控件。也可以从控件继承并覆盖渲染事件

  • 我建议使用javascript解决方案。ASP.NET注入一个名为Page_Validators的全局js变量,该变量是页面上所有验证程序跨度的数组。我是在网上写的。这是一个不同的解决方案,但它应该给您足够的洞察力来开始
  • 为每个面板使用带有一个标记的控件
  • 我建议使用javascript解决方案。ASP.NET注入一个名为Page_Validators的全局js变量,该变量是页面上所有验证程序跨度的数组。我是在网上写的。这是一个不同的解决方案,但它应该给您足够的洞察力来开始
  • 为每个面板使用带有一个标记的控件
  • 对于#2,我实际上已经在使用页面顶部的ValidationSummary来收集每个面板中的所有错误。我没有想到要覆盖呈现事件,我将研究它是如何完成的,并看看它是否工作。对于#2,我实际上已经在页面顶部使用ValidationSummary来收集每个面板的所有错误。我没有想到要重写呈现事件,我将研究它是如何完成的,并查看它是否工作。@#2,再次尝试澄清:有多个面板,每个面板包含一个表单元素,每个面板都有自己的验证程序。据我所知,ValidationSummary总结了整个页面上的所有验证——我想要的是一个面板一个面板(或者从美学角度讲,一节一节)报告错误。例如,如果您不输入姓名,我想在页面顶部(在ValidationSummary中)以及标签中特定于该元素的实际表单元素的正上方显示错误。@#2,再次尝试澄清:有多个面板,每个面板包含一个表单元素,每个面板都有自己的验证器。据我所知,ValidationSummary总结了整个页面上的所有验证——我想要的是一个面板一个面板(或者从美学角度讲,一节一节)报告错误。例如,如果您没有输入您的姓名,我希望在页面顶部(在ValidationSummary中)以及标签中实际表单元素的正上方显示错误,特定于该元素。