를 초기화하지 첫 번째 - LblTextBox : 레이블 텍스트사용자 정의 컨트롤 속성이 제대로
을 변경 설정할 수있는 LabelText 필드가 레이블 및 텍스트 상자 두 번째 - LoginCtl : 두 인스턴스를 가진 로그인 컨트롤 사용자 이름, 암호 및 제출 단추에 대한 LblTextBox의 설명
작업을 완료하기 위해 CreateChildControls()를 재정의하지 않으므로 서식 지정을 위해 이러한 컨트롤의 태그 렌더링을 제어하려고합니다.
내 문제는 컨트롤이 렌더링되지만 두 컨트롤의 OnInit() 코드 중 아무 것도 보류하지 않습니다 (빈 레이블, CSS 스타일이 적용되지 않음 등).
모든 방향이 좋습니다!
public class LblTextBox : CompositeControl
{
public string LabelText { get; set; }
public string Text { get; set; }
TextBox input;
Label label;
RequiredFieldValidator evalReqField;
public LblTextBox()
{
label = new Label();
input = new TextBox();
evalReqField = new RequiredFieldValidator();
}
protected override void OnInit(EventArgs e)
{
label.ID = "lblTextBox";
label.Text = string.Format("{0}:", LabelText);
input.ID = "tbInput";
evalReqField.ID = "evalInput";
evalReqField.ControlToValidate = input.ID;
evalReqField.ErrorMessage = "(Required)";
evalReqField.Display = ValidatorDisplay.Dynamic;
}
protected override void RenderChildren(HtmlTextWriter writer)
{
writer.RenderBeginTag(HtmlTextWriterTag.Div);
label.RenderControl(writer);
input.RenderControl(writer);
evalReqField.RenderControl(writer);
writer.RenderEndTag();
}
}
public class LoginCtl : CompositeControl
{
public string UserName
{
get
{
return (ltbUser != null) ? ltbUser.Text : string.Empty;
}
set
{
if (ltbUser != null)
ltbUser.Text = value;
}
}
public string Password
{
get
{
return (ltbPass != null) ? ltbPass.Text : string.Empty;
}
set
{
if (ltbPass != null)
ltbPass.Text = value;
}
}
private LblTextBox ltbUser;
private LblTextBox ltbPass;
private Button btnSubmit;
public LoginCtl()
{
ltbUser = new LblTextBox();
ltbPass = new LblTextBox();
btnSubmit = new Button();
}
protected override void OnInit(EventArgs e)
{
ltbUser.LabelText = "User Name";
ltbPass.LabelText = "Password";
btnSubmit.Text = "Submit";
btnSubmit.CssClass = "Submit";
}
protected override void RenderChildren(HtmlTextWriter writer)
{
writer.AddAttribute(HtmlTextWriterAttribute.Class, "LoginCtlDiv");
writer.RenderBeginTag(HtmlTextWriterTag.Div);
ltbUser.RenderControl(writer);
ltbPass.RenderControl(writer);
btnSubmit.RenderControl(writer);
writer.RenderEndTag();
}
}
. 나는 이미 해결책을 고안했다. 일반적으로이 문제를 다루는 데는 여러 가지 방법이 있습니다. 주로이 질문을 형식을 바꾸었고 학습 과정에서이 문제로 인해 실행될 수있는 문구가 있기 때문에 주로이 문제를 다시 형식화했습니다. –