是否可以避免从ASP.Net验证器控件呈现错误消息,直到验证器被评估为无效?

时间:2013-03-04 17:13:51

标签: asp.net css section508

考虑到我无法在其他任何地方找到需要此功能的其他人的单个实例,这个可能是一个不受欢迎的要求。那说:

我正在处理的网站使用了几十种不同的验证器控件(从RequiredFieldValidaotrs到CustomValidators的所有内容),用于表单验证。作为Section 508合规性的一部分,我们必须支持禁用CSS的用户,这是有问题的,因为验证器将错误文本呈现给页面并使用CSS显示属性来隐藏它。禁用CSS时,屏幕阅读器都可以看到所有错误消息。

如果没有使用标签和回发来显示和隐藏所述标签,是否有任何已知的方法可以使用禁用CSS的ASP.Net验证器控件?

1 个答案:

答案 0 :(得分:0)

使用FieldValidator控件上的Display="None"属性和ValidationSummary标记来包含消息。

<form id="form1" runat="server">
        <asp:TextBox runat="server" ID="TextBox1"  /> <br />
        <asp:TextBox runat="server" ID="TextBox2"  /> <br />
        <asp:Button runat="server" Text="Go"  />

        <div class="messages">
            <asp:ValidationSummary id="summery1"  runat="server"/>
        </div>

        <div>
        <asp:Panel ID="Panel1" runat="server" >
            <asp:RequiredFieldValidator ID="RequiredFieldValidator1"  runat="server" 
                    ErrorMessage="Required Field Validator1 empty" ControlToValidate="TextBox1" Display="None" />
                <asp:RequiredFieldValidator ID="RequiredFieldValidator2"  runat="server" 
                    ErrorMessage="Required Field Validator2 empty" ControlToValidate="TextBox2" Display="None" />
        </asp:Panel>
        </div>
    </form>

HOWEVER ....(总是有一个问题)...使用此方法,验证消息本身仅存储在JavaScript中。这意味着如果禁用Javascript它将无法工作。我假设这不是一个大问题,因为你在WebForms(依赖JS)工作,但我认为值得一提。

并且为了记录,可访问性问题主要是马蹄铁。我想我知道可访问性,直到我真正与视障人士(100%盲人)合作。然后,我了解到JS的工作正常(假设他们知道要寻找新的内容......)并且他们只是从链接到链接跳过页面,直到找到他们所追求的内容。而基于表格的布局并没有减慢它们1秒的速度。几年后被SOOO无法忍受地宣传CSS的男孩,这是一个难以吞咽的药丸....