[英]Dynamically creating CustomValidator in server control
我有一個自定義服務器控件,它包裝了一個 RadEditor(基本上是一個文本區域)。 我正在嘗試動態地向其添加 CustomValidator,但我在初始頁面加載時不斷收到此錯誤
無法找到“”的“ControlToValidate”屬性引用的控件 ID“RadEditor1”。
這是我在服務器控件中用來創建 CustomValidator 的代碼:
protected override void OnInit(EventArgs e)
{
var validator = new CustomValidator();
validator.CssClass = "validator-error";
validator.Display = ValidatorDisplay.Dynamic;
validator.ControlToValidate = this.ID;
validator.Text = "You've exceeded the maximum allowed length for this field";
validator.ClientValidationFunction = "checkLength";
this.Controls.Add(validator);
base.OnInit(e);
}
問題在於RadEditor
實現了INamingContainer
,因此 ASP.NET 最終在服務器控件的子控件中搜索名為RadEditor1
的控件。 當然,它不成功,因為RadEditor1
沒有名為RadEditor1
的子控件。
我使用的技巧是選擇一個特殊的 ID,例如"."
表示父控件本身:
protected override Control FindControl(string id, int pathOffset)
{
return (id == ".") ? this : base.FindControl(id, pathOffset);
}
然后用"."
作為ControlToValidate
:
validator.ControlToValidate = ".";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.