【问题标题】:ASP.Net RequiredFieldValidator bug with the InitialValue property?InitialValue 属性的 ASP.Net RequiredFieldValidator 错误?
【发布时间】:2016-01-07 13:33:50
【问题描述】:

我刚刚发现了这种奇怪的行为,这是一个错误还是我错过了什么?

<asp:TextBox runat="server" Text="" ID="txtSomething" />
<asp:RequiredFieldValidator 
    ErrorMessage="errormessage" 
    ControlToValidate="txtSomething"
    runat="server"
    Text="(*) Required"
    SetFocusOnError="true"
    EnableClientScript="true"/>

使用这个简单的代码,验证可以正常工作,即使我写了一个充满空格的字符串

但如果我像这样添加InitialValue 属性:

<asp:TextBox runat="server" Text="lol" ID="txtSomething" />
<asp:RequiredFieldValidator 
    ErrorMessage="errormessage" 
    ControlToValidate="txtSomething"
    runat="server"
    Text="(*) Required"
    SetFocusOnError="true"
    EnableClientScript="true"
    InitialValue="lol"/>

注意我添加了 InitialValue="lol"Text="lol"

现在如果我删除文本 lol 验证将被忽略

为什么??

【问题讨论】:

    标签: c# asp.net validation


    【解决方案1】:

    仔细看MSDN描述:

    使用该属性指定输入控件的初始值。

    仅当关联输入控件的值时验证失败 在失去焦点时匹配此 InitialValue。

    我认为它不言自明。

    【讨论】:

    • @Jupaol - 对我来说很有意义 - 您可能希望使用像 这样的默认值进行初始化。
    • 但是如果它是空的,它也应该失败......至少暴露一个标志来获得这种行为......
    • @Jupaol,你知道,你总是可以自己创建一个自定义验证器 :) .NET 中有很多奇怪的东西,我想这只是其中之一。还是比php好... :))
    • 我认为,这应该在 ASP.Net 中得到改进。目前不是可接受的行为。
    • @Lijo,是的,但还有更多可以改进的地方......在此之前,最好的方法可能是创建您自己的控件,这些控件具有您需要和期望的行为:)
    【解决方案2】:

    如果你使用 Visual Studio,你可以看到“Solution Explorer/References/System”。

    双击搜索,可以看到“RequiredFieldValidator是一个类,InitialValue是一个变量”


    您可以进行四种测试。

    没有。 TextBox   InitialValue   忽略
    1                                                                  哈哈 2                                                      没有
    3  “” 大声笑 不
    4  “” “” 是


    既然你使用 InitialValue 来比较 TextBox 的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多