【问题标题】:RequiredFieldValidator not firing when ControlToValidate visiblity is changed更改 ControlToValidate 可见性时,RequiredFieldValidator 未触发
【发布时间】:2009-06-03 19:51:24
【问题描述】:

当我更改 ddl.Visible=true(它在来自另一个表单元素事件的部分回发/更新面板上发生更改)时,RequiredFieldValidator 不会触发?

注意:这不是关于在正常情况下如何使用RequiredFieldValidator 的问题。我的表单有级联下拉菜单,它们都是动态构建的,它们的可见性可以打开和关闭。

<asp:DropDownList ID="ddl" Visible="false" AutoPostBack="True" runat="server">                                                               
</asp:DropDownList>
<asp:RequiredFieldValidator ControlToValidate="ddl" 
ID="RequiredFieldValidator1" 
runat="server" ErrorMessage="Required"></asp:RequiredFieldValidator>       

【问题讨论】:

    标签: .net asp.net validation requiredfieldvalidator


    【解决方案1】:

    您需要在RequiredFieldValidator 上设置InitialValue 属性,以便它知道DropDownList 的值何时发生了变化。例如,在具有这些值的下拉列表中:

    • Please Select
    • Dog
    • Cat
    • Bird

    你会添加这个属性

    InitialValue="Please Select" 
    

    致您的RequiredFieldValidator

    在不知道值是否发生变化的情况下,验证器不可能知道用户是否满足了它的要求。

    【讨论】:

    • InitalValue 的默认值为 String.Empty,这是我的第一个 ListItem。只要我不切换可见性,验证器就可以正常工作。
    • 你能发布所有相关代码吗?您的问题未显示为 InitialValue 设置的值。
    • 安德鲁你是对的,深入挖掘(太多动态让我头晕目眩)我发现我的默认 ListItem 的值是 0 而不是 String.Empty。我继续将我的 InitalValue 设置为明确的。谢谢
    • 为什么验证器需要知道一个值已经改变才能确定该值是否为例如是否为空?
    • InitialValue 不是必填字段验证器所必需的,除非您有一个非 string.empty 的“空”值。真正的问题在于部分回发和验证框架。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-29
    • 1970-01-01
    • 2018-12-17
    相关资源
    最近更新 更多