我正在尝试创建一个自定义验证传递给它的TextBox控件的方法。
这是我到目前为止所得到的:
自定义验证器
protected void CustomValidatorDelLN_ServerValidate(object sender, ServerValidateEventArgs args)
{
CustomValidator ThisValidator = sender as CustomValidator;
TextBox MyBox = FindControl(ThisValidator.ControlToValidate) as TextBox;
args.IsValid = isValid(MyBox);
}
验证方法
protected bool isValid(System.Web.UI.WebControls.TextBox MyBox)
{
bool is_valid = MyBox.Text != "";
MyBox.BackColor = is_valid ? System.Drawing.Color.White : System.Drawing.Color.LightPink;
return is_valid;
}
代码编译正常,但我得到了
NullReferenceException未被用户代码
处理
在
bool is_valid = MyBox.Text != "";
当我运行验证时。
我知道我很亲近(我认为我是)但是我哪里错了?
答案 0 :(得分:1)
首先需要在转换后检查对象本身是否存在:
bool is_valid = MyBox != null;
然后你可以检查它的文本属性
答案 1 :(得分:1)
您的问题是FindControl()
方法不是递归的,因此MyBox
为空。如果您希望它正常工作,您必须编写递归FindControl()
方法,如here。
您可能还想检查MyBox
是否为空,如果是,则返回方法。
答案 2 :(得分:0)
为了完整性,这段代码为我做了诀窍:
protected void CustomValidatorDelLN_ServerValidate(object sender, ServerValidateEventArgs args)
{
args.IsValid = isValid(txtDeliveryLastName);
}
protected bool isValid(System.Web.UI.WebControls.TextBox MyBox)
{
bool is_valid = MyBox.Text != "";
MyBox.BackColor = is_valid ? System.Drawing.Color.White : System.Drawing.Color.LightPink;
return is_valid;
}
答案 3 :(得分:-4)
您正在尝试验证空文本框。您无法验证空字符串。