【问题标题】:asp.net requiredfieldvalidator dont work when visible=falseasp.net requiredfieldvalidator 在 vi​​sible=false 时不起作用
【发布时间】:2012-02-15 13:30:35
【问题描述】:

我的 asp.net 站点中有一些 requiredFileldvalidators,我想在需要之前将其设置为不可见。但是当我将它们设置为 visible=false 时,它​​们不会触发。如果设置为 visible=true,它们确实可以工作。

这是该控件的正确行为还是错误。由于样式问题,我希望它们在可见时不可见。

【问题讨论】:

  • 将它们设置为不可见是什么意思? RequiredFieldValidator 不会显示消息,除非它需要 - 即除非您按下触发验证的按钮并且它发现缺少某些内容
  • 但是如果不可见,您希望它们如何有效?
  • 要验证的文本框是可见的,我希望 fieldvalidator 在需要之前不可见。这就是为什么我将属性 visible=false 和 enabled 属性设置为 true。
  • 为什么要设置为不可见?它已经 不可见 除非验证出错(即按下按钮后文本框为空)

标签: c# asp.net validation requiredfieldvalidator


【解决方案1】:

在 ASP.NET 中设置 Visible="false" 将导致元素呈现到页面。因此,它基本上不存在于客户端。默认情况下它们应该是不可见的,并且只有在满足要求标准时才会显示(或者它们是通过使用IsValid="false" 强制使用的)。

您可以使用Display 属性来帮助促进布局模式 - 但我感觉这与您想要做的事情并不完全相关。

【讨论】:

  • 好点 - 这个问题有一个解决方法:将 css display 属性设置为 none,然后,一旦需要再次可见(我认为这完全没有意义,因为这个除非验证出错,否则控件是“不可见的”)通过设置 displayinline - 两者都可以在客户端完成
  • 只需使用 Display="dynamic",它会一直隐藏(显示:无)直到它被触发,然后它会内联显示。
【解决方案2】:

我猜这是因为默认情况下 RequiredFieldValidator 通过将 visibility 设置为 hidden 来隐藏自己。

要让它改为将display 更改为none(不会在页面上留下空白)删除您的Visible="False" 属性并将此属性添加到控件:

Display="Dynamic"

【讨论】:

    【解决方案3】:

    尝试这样做:

    $("#myField").hide();
    

    在 jQuery 中, 或:

    style="display:none"
    

    在输入标签内。

    然后 in 将被渲染但只是不可见。

    【讨论】:

      【解决方案4】:

      asp.net 控件的 Visible 属性与样式无关。为此使用 css。 Visible 控制控件是否显示/渲染。也许您正在寻找 Display="Dynamic"?

      【讨论】:

      • 我的验证器控件的 css 有一个红色边框。因此,当验证器上的 visible=true 时,它​​会显示为一个红点。
      【解决方案5】:

      改用validator的“Enabled”属性,同时将Display属性设置为Dynamic,这样渲染时就不会占用空间了。

      这几乎可以满足您的需要。

      【讨论】:

        猜你喜欢
        • 2010-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多