【发布时间】: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