【问题标题】:Validation does not work for web usercontrol验证不适用于 Web 用户控件
【发布时间】:2011-04-18 21:45:56
【问题描述】:

我有以下带有验证的文本框:

<asp:TextBox ID="txtInput" runat="server" Width="80px" 
             CausesValidation="True"></asp:TextBox>

<asp:RequiredFieldValidator ID="RequiredValidator" runat="server"
                            ControlToValidate="txtInput"  
                            Display="None" 
                            ErrorMessage="Bitte füllen Sie dieses Feld aus" 
                            Enabled="false" />

<asp:RegularExpressionValidator ID="RegularExpressionValidator" runat="server" 
                                ControlToValidate="txtInput" 
                                ValidationExpression="[0-9]{1}(\d)*" 
                                Display="None" 
                                ErrorMessage="Bitte geben Sie eine Zahl ein" 
                                Enabled="false" />

<asp:ValidatorCalloutExtender ID="ValidatorCalloutExtender1" runat="server" 
                              TargetControlID="RequiredValidator"  />

<asp:ValidatorCalloutExtender ID="ValidatorCalloutExtender2" runat="server" 
                              TargetControlID="RegularExpressionValidator"  />

如果我单击此页面上的按钮(CausesValidation 设置为 true),则控件会正确验证。 但是,当我将文本框及其关联的验证器和扩展器不直接放在页面上,而是放入用户控件时,验证弹出窗口不再显示。它似乎仍然可以验证,因为输入无效时不会触发按钮的操作。

【问题讨论】:

  • 我有疑问.. 你能解释一下.. ValidatorCalloutExtender 的用途/需要是什么
  • 它只是在那里显示一个写出错误消息的弹出窗口

标签: asp.net ajax validation user-controls


【解决方案1】:

我找到了解决方案。我的用户控件的名称包含特殊字符。在我的情况下,“Ä”是德语 A-Umlaut。 似乎 ASP.NET 在名称包含非 ascii 字符的控件的验证器方面存在问题。

【讨论】:

    【解决方案2】:

    你的验证者有Enabled="false"

    【讨论】:

    • 那是因为我在运行时启用了它们。抱歉,我没有说清楚。同样,如果我将控件和验证器从用户控件移到表单中,它就会起作用。
    猜你喜欢
    • 2014-04-11
    • 2019-08-22
    • 1970-01-01
    • 2013-06-25
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多