代码之家  ›  专栏  ›  技术社区  ›  AaronSieb

是否有一种使用ASP.NET验证程序比较复选框和文本框的优雅方法?

  •  4
  • AaronSieb  · 技术社区  · 16 年前

    我有一个ASP.NET中继器,它包含一个文本框和一个复选框。我需要添加客户端验证,以验证选中复选框时,文本框只能接受零或空的值。

    我想使用一个或多个ASP.NET的验证程序控件来完成这项工作,为客户端错误(服务器端错误由另一个子系统处理)提供一致的显示。

    asp:comparevalidator似乎不够灵活,无法执行这种复杂的比较,所以我只剩下看看asp:customvalidator了。

    我遇到的问题是,似乎没有任何方法可以将自定义信息传递到验证函数中。这是一个问题,因为复选框和文本框的客户端ID在运行时对我来说是未知的(因为它们是中继器的一部分)。

    所以…我的选择似乎是:

    1. 以某种方式将文本框和复选框传递给customvalidator(似乎不可能)。
    2. 根据customvalidator传递的参数通过javascript查找文本框。这是可能的吗,客户端ID是不明确的呢?
    3. 完全忘记验证,并发出自定义的javascript(允许我将两个clientID都传递给一个自定义函数)。

    有什么想法可以更好地实现这一点?

    2 回复  |  直到 16 年前
        1
  •  2
  •   Tim Booker    16 年前

        2
  •  0
  •   Doug Moore    16 年前

    protected MyDataBound(object sender, RepeaterItemEventArgs e) {
      (CheckBox)cb = (CheckBox)e.Item.FindControl("myCheckboxName");
      (TextBox)tb = (TextBox)e.Item.FindControl("myTextBox");
    }