【问题标题】:reusing validation code for two text boxes重用两个文本框的验证码
【发布时间】:2013-04-30 13:26:49
【问题描述】:

我正在尝试为两个单独的文本框调用相同的验证方法(它们自己的自定义验证器指向相同的方法)。原因是它们都是零件编号字段,并且验证是检查输入的零件是否确实存在。

作为验证过程的一部分,我需要获取输入到正在验证的字段中的文本。

我正在尝试这个......

protected void validatePart_ServerValidate(object source, ServerValidateEventArgs args)
{
    CustomValidator cv = (CustomValidator)source;
    TextBox partNo = (TextBox)FindControl(cv.ControlToValidate);

    args.IsValid = Part.Exists(partNo.Text);

但是用 (PartNo.Text) 得到错误

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

我想知道如何从验证源的 ControlToValidate 属性正确设置 partNo TextBox

任何帮助表示赞赏!

谢谢

【问题讨论】:

  • 您可以使用调试器或更多日志记录来逐步完成此操作吗?我怀疑FindControl 返回null。如果转换失败,CustomValidator cv = (CustomValidator)source; 应该抛出异常,因此您已经正确识别了源类型。一些调试输出会告诉您cv.ControlToValidate 是否是您期望的值。还可以尝试发布初始化CustomValidator 并填充ControlToValidate 属性的代码。
  • 如果source为null,实际上CustomValidator cv = (CustomValidator)source;可能不会抛出异常?你是在抛出这个事件还是这是一个抛出事件的库类?如果您自己,请发布引发事件的代码。

标签: c# asp.net validation


【解决方案1】:

试试这个:

protected void validatePart_ServerValidate(object source, ServerValidateEventArgs args)
{
    args.IsValid = Part.Exists(args.Value);
}

【讨论】:

  • 坦率地说,我到底在想什么?还在学习曲线上,谢谢你的回答!! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多