2013-04-11 3 views
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); 

나는이 코드는 Page_Load()에 위치 오류를

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

을 얻고있다,하지만 난 성공없이 다른 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이 하나 있습니다).

편집 2 : 위의 코드가 작동합니다. 무엇이 잘못되었는지 확실하지 않습니다.

+0

코드가 정상적으로 작동합니다. 나머지 코드는 게시하십시오. – Win

+0

문제가있는 코드를 붙여 넣었습니다. –

답변

1

내 지식에 따라 직접 액세스 할 수 없습니다. 아래 그림과 같이 "FindControl()"메서드를 사용해야 할 수도 있습니다.

RequiredFieldValidator rfv1 = new RequiredFieldValidator(); 
rfv1.ControlToValidate = PlaceHolderResidents.FindControl(tb1.ID); 

희망이 있습니다!

+0

빠른 답장을 보내 주셔서 감사합니다. 나는이'rfv1.ControlToValidate = ((TextBox) PlaceHolderResidents.FindControl (tb1.ID)) .ID' 시도했다. 그러나 그것은 나에게 같은 오류를 준다. –

+0

이런 방식으로 작동하지 않았습니까? – Praveen

+0

Nope. 같은 오류 '''. '의'ControlToValidate '속성에 의해 참조 된 컨트롤 ID'LastName4 '을 찾을 수 없습니다. 유효성 검사기 자체에 문제가있는 것으로 보입니다. –