У меня есть пользовательский элемент управления, который генерирует пару ввода метки для формы. Я хочу, чтобы текст этой метки контролировался полем имени вместо поля идентификатора. Однако, когда я захожу в пользовательский элемент управления и явно устанавливаю текстовое поле моей метки равным имени, текст метки всегда является идентификатором моего пользовательского элемента управления. Почему?
Форма на странице:
<FormUpgrade:FormUpgrade ID="fname" type="text" name="First Name" runat="server" />
В моей функции oninit
есть строки:
aLabel.Text = name;
this.Controls.Add(this.aLabel);
aLabel
никогда не трогается после этого.
Однако, если я наберу поле метки вручную, тогда текстовое поле будет работать как положено.
Вот код для всего пользовательского элемента управления:
namespace FormUpgrade
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:FormUpgrade runat=server></{0}:FormUpgrade>")]
public class FormUpgrade : WebControl
{
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public Label aLabel = new Label();
public TextBox aField = new TextBox();
public RegularExpressionValidator regexvalid = new RegularExpressionValidator();
protected override void OnInit(EventArgs e)
{
regexvalid.ID = ID + "_validator";
if (!String.IsNullOrEmpty(ID))
{
aField.ID = ID+"_box";
aLabel.ID = ID + "_label";
aLabel.AssociatedControlID = aLabel.ID;
}
//aField.Attributes.Add("runat", "server");
// aLabel.Attributes.Add("runat", "server");
if (!String.IsNullOrEmpty(required))
{
aField.Attributes.Add("required", required);
if (required.Equals("required"))
{
aLabel.Attributes.Add("class", "required");
}
}
if (!String.IsNullOrEmpty(name))
{
aField.Attributes.Add("name", name);
aLabel.Text = name;
}
else
{
aLabel.Text = ID;
}
if (!String.IsNullOrEmpty(placeholder))
{
aField.Attributes.Add("placeholder", placeholder);
}
if (!String.IsNullOrEmpty(role))
{
aField.Attributes.Add("role", role);
}
if (!String.IsNullOrEmpty(maxlength))
{
aField.Attributes.Add("maxlength", maxlength);
}
if (!String.IsNullOrEmpty(placeholder))
{
aField.Attributes.Add("placeholder", placeholder);
}
aLabel.Attributes.Add("for", ID+"_box");
if (!String.IsNullOrEmpty(type))
{
aField.Attributes.Add("type", type);
}
//if (type.Equals("date"))
//{
// aField.Attributes.Add("class", "hasDatepicker");
//}
if(type.Equals("textarea"))
{
aField.TextMode = TextBoxMode.MultiLine;
}
if (type.Equals("password"))
{
aField.TextMode = TextBoxMode.Password;
}
aLabel.Text = name;
this.Controls.Add(this.aLabel);
this.Controls.Add(this.aField);
if(type.Equals("email"))
{
regexvalid.ValidationExpression = "[a-zA-Z0-9]+([-+.][a-zA-Z0-9]+)*@[a-zA-Z0-9]+([-.][a-zA-Z0-9]+)*.[a-zA-Z0-9]+([-.][a-zA-Z0-9]+)*";
regexvalid.ControlToValidate = ID+"_box";
regexvalid.ErrorMessage = "Not a valid email address <br>";
this.Controls.Add(regexvalid);
}
else if (type.Equals("url"))
{
regexvalid.ValidationExpression = "http(s)?://([a-zA-Z0-9-]+.)+[a-zA-Z0-9-]+(/[a-zA-Z0-9- ./?%&=]*)?";
regexvalid.ControlToValidate = ID + "_box";
regexvalid.ErrorMessage = "Not a valid URL<br>";
this.Controls.Add(regexvalid);
}
else if(!String.IsNullOrEmpty(ValidationExpression))
{
regexvalid.ControlToValidate = ID + "_box";
regexvalid.ValidationExpression = ValidationExpression;
if (!String.IsNullOrEmpty(ValidationErrorMessage))
{
regexvalid.ErrorMessage = ValidationErrorMessage + "<br>";
}
this.Controls.Add(regexvalid);
}
base.OnInit(e);
}
public string Text
{
get
{
String s = (String)ViewState["Text"];
return ((s == null) ? "[" + this.ID + "]" : s);
}
set
{
ViewState["Text"] = value;
}
}
public string type
{
get
{
String s = (String)ViewState["type"];
return ((s == null) ? "[" + this.ID + "]" : s);
}
set
{
ViewState["type"] = value;
}
}
public string name
{
get
{
String s = (String)ViewState["name"];
return ((s == null) ? "" : s);
}
set
{
ViewState["name"] = value;
}
}
public string required
{
get
{
String s = (String)ViewState["required"];
return ((s == null) ? "" : s);
}
set
{
ViewState["required"] = value;
}
}
public string role
{
get
{
String s = (String)ViewState["role"];
return ((s == null) ? "" : s);
}
set
{
ViewState["role"] = value;
}
}
public string ValidationExpression
{
get
{
String s = (String)ViewState["ValidationExpression"];
return ((s == null) ? "" : s);
}
set
{
ViewState["ValidationExpression"] = value;
}
}
public string ValidationErrorMessage
{
get
{
String s = (String)ViewState["ValidationErrorMessage"];
return ((s == null) ? "" : s);
}
set
{
ViewState["ValidationErrorMessage"] = value;
}
}
public string placeholder
{
get
{
String s = (String)ViewState["placeholder"];
return ((s == null) ? "" : s);
}
set
{
ViewState["placeholder"] = value;
}
}
public string Display
{
get
{
String s = (String)ViewState["Display"];
return ((s == null) ? "" : s);
}
set
{
ViewState["Display"] = value;
}
}
public string maxlength
{
get
{
String s = (String)ViewState["maxlength"];
return ((s == null) ? "" : s);
}
set
{
ViewState["maxlength"] = value;
}
}
public string Value
{
get
{
String s = (String)ViewState["Value"];
return ((s == null) ? "" : s);
}
set
{
ViewState["Value"] = value;
}
}
public override void RenderBeginTag(HtmlTextWriter writer)
{
}
public override void RenderEndTag(HtmlTextWriter writer)
{
}
}
}