Label.AssociatedControlID vs. CompositeControl
Jeg har lavet en meget simpel CompositeControl.using System.Web.UI.WebControls;
namespace MyCustomControls
{
public class MyCompositeControl : System.Web.UI.WebControls.CompositeControl
{
public string LabelText {
get {
Label lbl = (Label)FindControl("LabelID");
return lbl.Text;
}
set {
Label lbl = (Label)FindControl("LabelID");
lbl.Text = value;
}
}
public string Text
{
get
{
TextBox tb = (TextBox)FindControl("TextBoxID");
return tb.Text;
}
set
{
TextBox tb = (TextBox)FindControl("TextBoxID");
tb.Text = value;
}
}
protected override void CreateChildControls()
{
TextBox tb = new TextBox();
tb.ID = "TextBoxID";
Label lbl = new Label();
lbl.ID = "LabelID";
lbl.AssociatedControlID = tb.ID;
Controls.Add(lbl);
Controls.Add(tb);
}
}
}
Når jeg bruger den på min aspx side:
<cc1:MyCompositeControl LabelText="Bare en test" Text='<%# Bind("Email") %>' ID="TestId" runat="server" />
udskrives denne html:
<span id="ctl00_ContentPlaceHolder1_FormView1_TestId"><label class="" for="LabelID">Bare en test</label><br /><input name="ctl00$ContentPlaceHolder1$FormView1$TestId$TextBoxID" type="text" value="22" id="ctl00_ContentPlaceHolder1_FormView1_TestId_TextBoxID" /></span>
Som det ses er property'en "for" på "label" elementet forkert. Den burde være "ctl00_ContentPlaceHolder1_FormView1_TestId_TextBoxID" isteder for "LabelID"
Hvad har jeg gjort forkert
På forhånd tak