C# 在OnServerValidate方法中获取源代码管理
我有一个CustomValidator控件,在OnServerValidate事件中,我想设置正在验证的控件的属性 您可能认为已验证的控件对象在OnServerValidate事件中可用,但事实并非如此。然后,我尝试执行FindControl,但似乎无法访问ControlToValidate值 是否有人可以帮助我验证TextBox控件,以便我可以从OnServerValidate事件修改其属性 谢谢,C# 在OnServerValidate方法中获取源代码管理,c#,asp.net,validation,customvalidator,C#,Asp.net,Validation,Customvalidator,我有一个CustomValidator控件,在OnServerValidate事件中,我想设置正在验证的控件的属性 您可能认为已验证的控件对象在OnServerValidate事件中可用,但事实并非如此。然后,我尝试执行FindControl,但似乎无法访问ControlToValidate值 是否有人可以帮助我验证TextBox控件,以便我可以从OnServerValidate事件修改其属性 谢谢, 你能这样做吗 protected void CustomValidator1_ServerVa
你能这样做吗
protected void CustomValidator1_ServerValidate (object source, ServerValidateEventArgs args)
{
var validationControl = source as CustomValidator;
var textBox = FindControl(validationControl.ControlToValidate) as TextBox;
if (textBox != null)
{
// Do something
}
}
我尝试了上面的答案,但由于我的文本框位于内容占位符的列表视图中,所以一切都有点失控。我最终使用了这种在任何情况下都应该有效的方法:
string textBoxName = ((CustomValidator)source).ControlToValidate;
var textBox = ((CustomValidator)source).Parent.FindControl(textBoxName) as TextBox;
对于获取值:
string number = args.Value;
如果您知道正在验证的控件,为什么不能直接访问它?它是嵌套在数据绑定控件中还是什么?我正在尝试创建一个“通用”CustomValidator,即使它将被许多不同的控件使用。@JamesJohnson我也有同样的问题,我不能硬编码控件的原因是,我想对三个不同的字段使用相同的验证函数。虽然略有不同,但你做到了!!ContentPlaceHolder placeholder=Master.FindControl(“占位符内容”)作为ContentPlaceHolder;CustomValidator validationControl=源作为CustomValidator;TextBox TextBox=占位符.FindControl(validationControl.ControlToValidate)作为TextBox;如果(textBox!=null){}非常感谢您在这方面的帮助。