Первый - 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();
}
}
Это может очень хорошо работать. Я уже разработал решение. Кажется, что обычно есть несколько способов решения таких вопросов: D Я в основном переформатировал этот вопрос, потому что он был плохо отформатирован и сформулирован для любого, что может столкнуться с этим в процессе обучения. –