RegularExpressionValidator
プログラムでコンテナー コントロール (パネル、プレースホルダーなど) に を追加する際に問題が発生しています。これが私のコードです:
// Get the path of the file on the server
string page = Page.Request.FilePath;
int managementCompanyId = Convert.ToInt32(Session["ManagementCompanyId_AddResident"].ToString().Trim());
// Get field validation details
Collection<ExportFieldValidation> details = ValidationBL.GetValidationDetails(managementCompanyId, page);
ContentPlaceHolder body = Page.Form.FindControl("ContentBody") as ContentPlaceHolder;
foreach (ExportFieldValidation detailItem in details)
{
// Check if the control exists on the page
TextBox control = body.FindControl(detailItem.FieldToValidate) as TextBox;
if (control != null)
{
RegularExpressionValidator regex = new RegularExpressionValidator()
{
ControlToValidate = control.UniqueID.ToString(),
ID = detailItem.ValidatorFieldName,
ValidationExpression = detailItem.RegularExpression,
Page = this,
SetFocusOnError = true,
Text = detailItem.ErrorMessage,
Enabled = true,
EnableViewState = true,
CssClass = "Error"
};
Panel validationPanel = body.FindControl("PanelAddResident") as Panel;
validationPanel.Controls.Add(regex);
}
}
ページに移動すると、エラーが表示されますUnable to find control id 'myControl' referenced by the 'ControlToValidate' property of 'RegularExpressionValidatorResidentId'
。ここで、コントロールはcontrol.UniqueID.ToString()
上からのものであり、データベースに保存されており、値を二重、三重、および四重にチェックしたため、確かに正しいです。
ただし、すべてを置き換えるvalidationPanel.Controls.Add(regex);
とPage.Form.Controls.Add(regex);
完全に機能します。
バリデーターをコンテナーに追加する方法はありますか? 私は何か間違ったことをしているだけか、どこか途中でステップを逃していると確信しています。どんな助けでも大歓迎です。