【发布时间】:2011-09-23 14:37:51
【问题描述】:
我正在尝试创建一个自定义验证传递给它的任何 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 != "";
当我运行验证时。
我知道我很接近(我想我很接近)但我哪里出错了?
【问题讨论】:
-
Line 'TextBox MyBox = FindControl(ThisValidator.ControlToValidate) as TextBox;' - MyBox 为空
-
看看 FinControl() 它不是递归的。我不确定你为什么在那里使用 FindControl(),你在页面上吗?如果是这样,您可以将 runat="server" 放在该sucka 中并按名称使用它。
-
抱歉,我看到你在自定义验证器中使用它,所以你可以验证任何文本框。
-
@EJC FindControl() 被建议作为解决方案
-
@EJC 感谢您的 cmets 帮助减少了一分钱。所有人都在工作。
标签: c# asp.net validation methods