Ik kan in de documentatie over het volgende niets terugvinden. Je hebt een usercontrol met ascx en de codebehind.
In de codebehind is er een overridden render method, die de ascx output en de property Label uitpoept.
De ascx inhoud wordt niet gerenderd als je hem op de volgende wijze toepast.
Hij wordt wel gerendered als je hem op de volgende wijze toepast
En hij wordt ook gerendered als je de control via code in gaat voegen.
Wat ik me afvraag, waarom wordt de ascx niet gerendered als je hem via een library toe wilt voegen. Logischerwijs zou je zeggen, de class Test is niet bekend met het bestaan van een ascx. De rest van de aanroepen refereert duidelijk naar een ascx. Dit is een gevoel, maar wat zijn de feiten?
In de codebehind is er een overridden render method, die de ascx output en de property Label uitpoept.
code:
1
2
3
4
5
6
| protected override void Render(HtmlTextWriter output)
{
StringWriter tw = new StringWriter();
base.Render(new HtmlTextWriter(tw));
output.Write(tw.ToString() + Label);
} |
De ascx inhoud wordt niet gerenderd als je hem op de volgende wijze toepast.
code:
1
2
| <%@ Register TagPrefix="test" Namespace="Imanage.Modules.Base" Assembly="Modules.Base" %> <test:test runat="server" ID="test" Label="test"></test:test> |
Hij wordt wel gerendered als je hem op de volgende wijze toepast
code:
1
2
| <%@ Register tagprefix="test" tagname="test" src="test.ascx" %> <test:test runat="server" ID="test" Label="test"></test:test> |
En hij wordt ook gerendered als je de control via code in gaat voegen.
code:
1
2
3
| Test t = (Test)this.LoadControl("~/test.ascx");
t.Label = "test";
FindControl("form1").Controls.Add(t); |
Wat ik me afvraag, waarom wordt de ascx niet gerendered als je hem via een library toe wilt voegen. Logischerwijs zou je zeggen, de class Test is niet bekend met het bestaan van een ascx. De rest van de aanroepen refereert duidelijk naar een ascx. Dit is een gevoel, maar wat zijn de feiten?
[ Voor 12% gewijzigd door Verwijderd op 07-05-2006 18:14 ]