0

コントロールだけでなくページにもコントロールを追加していますRequiredFieldValidatorが、問題が発生しています。

    int i = 4; // for testing; for now
    // add surname textbox
    PlaceHolderResidents.Controls.Add(new LiteralControl("<div class=\"control-group\">"));

    TextBox tb1 = new TextBox();
    tb1.ID = "LastName" + i;
    tb1.CssClass = "input-xlarge";
    labelLastName.AssociatedControlID = tb1.ID;

    PlaceHolderResidents.Controls.Add(labelLastName);
    PlaceHolderResidents.Controls.Add(new LiteralControl("<div class=\"controls\">"));
    PlaceHolderResidents.Controls.Add(tb1);

    RequiredFieldValidator rfv1 = new RequiredFieldValidator();
    rfv1.ControlToValidate = tb1.ID; // ERROR HERE
    rfv1.ErrorMessage = GetLocalResourceObject("RequiredFieldValidator_LastNameResource.ErrorMessage").ToString();
    PlaceHolderResidents.Controls.Add(rfv1);

エラーが発生します

System.Web.HttpException: Unable to find control id 'LastName4' referenced by the 'ControlToValidate' property of ''.

このコードは に配置されてPage_Load()いますが、他のイベントに配置しようとしてPageも成功しませんでした。何か案は?ありがとうございました。

編集: このセクションの完全なコード。

            PlaceHolderResidents.Controls.Add(new LiteralControl("\n\n<div class=\"control-group\">"));
    Label labelLastName = new Label();
    labelLastName.Text = GetLocalResourceObject("LastNameLabelResource.Text").ToString();
    labelLastName.CssClass = "control-label asterisk";
    TextBox tb1 = new TextBox();
    tb1.ID = "LastName" + i;
    tb1.CssClass = "input-xlarge";
    labelLastName.AssociatedControlID = tb1.ID;
    PlaceHolderResidents.Controls.Add(labelLastName);
    PlaceHolderResidents.Controls.Add(new LiteralControl("\n<div class=\"controls\">"));
    PlaceHolderResidents.Controls.Add(tb1);
    PlaceHolderResidents.Controls.Add(new LiteralControl("\n<p class=\"help-block\">"));
    RequiredFieldValidator rfv1 = new RequiredFieldValidator();
    rfv1.ControlToValidate = tb1.ID;
    rfv1.ErrorMessage = GetLocalResourceObject("RequiredFieldValidator_LastNameResource.ErrorMessage").ToString();
    rfv1.EnableClientScript = false;
    PlaceHolderResidents.Controls.Add(rfv1);
    PlaceHolderResidents.Controls.Add(new LiteralControl("\n</p></div></div>"));

ページにこれらのバリデーターがさらにあり、それらのほとんどが機能していることに注目するのは興味深いことです。ページ上の多くのバリデーターの上にあるコードをコメントアウトすると、動作します (RequiredFieldValidator何らかの理由で同じエラーが発生するものがもう 1 つあります)。

編集2:上記のコードは機能します。何が間違っていたのかわからない。

4

1 に答える 1