【问题标题】:Validation Summary does not render correctly验证摘要未正确呈现
【发布时间】:2011-04-20 00:21:24
【问题描述】:

有没有人见过这个,有没有人知道如何解决它...

验证摘要控件似乎正在呈现:

error message
<br>
error message
<div style="display: none;" id="summaryID">
</div>

如果我在这里错了,请纠正我,但我的错误不应该出现在那个 div 内......这就是你可以使用 CssClass="whatever" 在控制服务器端放置一个 cssclass 的原因吗?

还是我错过了什么?

编辑:

只是为了验证......这就是我期望它呈现的内容:

<div style="display: none;" id="summaryID">
error message
<br>
error message
</div>

编辑 2:

产生这个的服务器端标记是...

<asp:ValidationSummary ID="ui_ValidationSummary" runat="server" />

... 控件的负载,但这里有一个例子(不想让事情过于复杂): ...

<asp:TextBox ID="ui_txtClientDOB" runat="server" />
<asp:RangeValidator ID="ui_RangeValidator_DOB" runat="server" ControlToValidate="ui_txtClientDOB" ErrorMessage="DOB is not valid" MinimumValue="1900/01/01" Type="Date" ForeColor="Red">*</asp:RangeValidator>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="ui_txtClientDOB" ErrorMessage="DOB is missing" ForeColor="Red">*</asp:RequiredFieldValidator>

如果此文本框上的任一验证器有理由未能通过验证,则结果如所讨论的那样,一个空的 div 标记,旁边有一个错误。

【问题讨论】:

    标签: asp.net validation web-controls


    【解决方案1】:

    很可能 div #summaryID 是显示客户端验证错误的地方。使用像 firebug 这样的工具来查看这一点,因为您无法在 javascript 填充标记上查看源代码。否则,关闭客户端验证并进行回发。

    编辑

    我的猜测是,您将显示的错误消息与验证控件本身混在一起,而不是在验证摘要中。如果您不向验证控件提供文本属性,它将使用错误消息。试试下面的(去掉 text 属性,你就会明白我的意思了):

    <asp:ValidationSummary ID="val" runat="server" CssClass="test" 
        DisplayMode="List" />
    
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
        ControlToValidate="TextBox1" ErrorMessage="RequiredFieldValidator" Text="*"></asp:RequiredFieldValidator>
    
    
    <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
    <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" 
        ControlToValidate="TextBox2" ErrorMessage="RequiredFieldValidator" Text="*"></asp:RequiredFieldValidator>
    
        <asp:Button ID="Button1" runat="server" Text="Button" />
    

    【讨论】:

    • 我正在使用 firebug ...这就是生成的渲染代码...我的问题是我试图设置摘要的样式,尽管它的样式摘要包含 div 与我选择的 css 样式正确但不是设置摘要消息的样式,因为它们没有在该 div 内呈现……而且客户端和服务器端都会发生这种情况。
    • say textbox1 已填充而 textbox2 未填充...然后验证摘要将根据您的示例呈现 1 "*" ...我希望确保 * 出现在 div 内应该包含验证摘要结果。你所拥有的类似于我在服务器上拥有的接受我在每个必填字段验证器控件的 Text 属性中都有消息。在客户端预期的 div 标签之外呈现的消息。
    • 这样您的示例将呈现类似 ... *
    • 我认为您误解了验证摘要。将必填字段验证器放在页面上的其他位置 - 例如,在表格中,您会看到验证器和摘要是完全不同的。摘要只是获取错误消息并呈现它们。验证器有自己的渲染图。
    • 我有一个表...带有控件,并且这些控件具有与之关联的验证器...我了解验证的工作原理...当进行验证时,它们会产生错误消息。我的理解是验证摘要控件在其自己的输出中呈现这些消息的内容。因为这似乎是产生的......问题是输出不是预期的格式。
    猜你喜欢
    • 2017-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多