【问题标题】:CustomValidator to validate multiple controlsCustomValidator 验证多个控件
【发布时间】:2010-05-11 15:11:57
【问题描述】:

有没有办法让自定义验证器从两个控件中获取输入,例如两个复选框并确保只选中一个?

或者说我做错了,更重要的是,如果我错了,你能指出我正确的方向吗?

即使这实际上是错误的方向,我也想知道如何做到这一点,以防我遇到适用的情况,那就是如果可能的话。

提前感谢您的帮助。

【问题讨论】:

  • 如果你想要一个总是被选中,为什么不使用一个单选按钮组呢?如果两者都可以取消选中,那么这是不够的(除非您在组中提供第三个选项,即无)
  • 不幸的是,这是我无法控制的设计决策。他们对单选按钮不满意。

标签: c# .net customvalidator


【解决方案1】:

如果您想确保只选中两个复选框中的一个,则说明您使用了错误的控件。

使用单选按钮设置独占选择。

【讨论】:

  • 不幸的是,这是我无法控制的决定。请求报告的人不喜欢单选按钮并想要复选框。 :/ 否则是的,这将是正确的解决方案。
【解决方案2】:

AJAX 控件工具包有一个专有的复选框列表。我同意它的需要,因为单选按钮不能像复选框一样被取消选择。

如果您希望推出自定义验证器,听起来您要么在服务器端进行,此时您可以在后面的代码中执行您想要的任何逻辑。相反,您可以滚动自己的 javascript 来强制执行它。

【讨论】:

  • 我将研究如何使用 AJAX 控件工具包,并让您知道它是如何工作的。我尝试使用自己的 JavaScript,但无论出于何种原因,我写的东西和我在 Google 上找到的示例都不起作用。我会选择一个复选框,然后为了测试我会选择另一个,它们都会保持选中状态,我什至无法通过再次单击它们来取消选中它们。
  • 控制工具包不起作用有两个原因。 1)我们这里还在运行2.0,短期内没有升级的希望,2.0版本的工具包已经不可用了。 2) 我必须使用标准的 html 输入标签而不是复选框控件。所以看起来我必须编写一些 JavaScript 才能让它工作。
【解决方案3】:

我同意 Mitchel 的观点,即 RadioButton 似乎更合适。

但是您是否尝试过连接 CompareValidator 并将其设置为验证 UnEqual?

【讨论】:

  • 这似乎也是一个很好的解决方案,我会研究一下这个和 AJAX 工具包的专有复选框列表,然后回来更新复选标记和赞成票。
【解决方案4】:

我也在处理类似的问题。我解决此问题的方法是为我的每个控件创建一个验证器,并将它们链接到相同的方法,以确保您的验证限制是什么。

protected void validator1_ServerValidate(...){
  myValidationMethod(...);
}

protected void validator2_ServerValidate(...){
  myValidationMethod(...);
}

它有效,但它很丑 IMO

【讨论】:

    【解决方案5】:

    我写了一篇关于这件事的博客文章。

    http://coding.infoconex.com/post/2010/10/11/ASPNET-CustomValidator-that-validates-multiple-controls-using-both-Server-Side-and-Client-Side-scripting

    结合客户端和服务器端验证并重新验证

    【讨论】:

    • 页面现在位于here
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    • 1970-01-01
    • 2012-06-21
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多