Toon posts:

[C#] webusercontrole dynamisch opbouwen.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik had in eerste instantie een pagina (.aspx)
deze bouwde ik dynamische op.

even kort door de bocht:
code:
1
2
3
StringBuilder sb = new StringBuilder
sb.Append("<html><body> een hoop blabla</body></html>");
Response.Write(sb.Tostring())


Dit werkte allemaal perfect.
Nu werk echter aan een site en maak gebruik van webusercontrols(.ascx).
en wilde gebruik maken van dezelfde constructie, maar dat werkt dus niet :(
Hoe kan ik mijn webusercontrol dan toch dynamisch opbouwen?

  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 01-04 20:36

Not Pingu

Dumbass ex machina

Never de nooit niet Response.Write gebruiken. Waarom werk je uberhaupt met ASP.NET als je kennelijk de ASP/PHP werkwijze niet los kunt laten?

Response.Write schrijft altijd aan het eind van de pagina. Sowieso is het onzin om je HTML en BODY tags zo neer te zetten, dat kun je gewoon direct als markup schrijven.

Kijk eens naar server controls. Als je echt perse alle markup in code wilt opbouwen, kun je een Literal plaatsen en daar de Text-property van invullen.

Certified smart block developer op de agile darkchain stack. PM voor info.


Verwijderd

Topicstarter
Gunp01nt schreef op zondag 12 juni 2005 @ 11:52:
Never de nooit niet Response.Write gebruiken. Waarom werk je uberhaupt met ASP.NET als je kennelijk de ASP/PHP werkwijze niet los kunt laten?

Response.Write schrijft altijd aan het eind van de pagina. Sowieso is het onzin om je HTML en BODY tags zo neer te zetten, dat kun je gewoon direct als markup schrijven.

Kijk eens naar server controls. Als je echt perse alle markup in code wilt opbouwen, kun je een Literal plaatsen en daar de Text-property van invullen.
En dat geeft hetzelfde effect als een Response.Write in een aspx pagina?
code:
1
2
Literal lc = new Literal();
lc.Text = sb.ToString();

Zou dan het enige moeten zijn wat er ingebouwd moet worden?

  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 01-04 20:36

Not Pingu

Dumbass ex machina

Een servercontrol definieer je zo:

ASPX pagina:
code:
1
2
3
4
5
6
7
8
9
10
<%@ Page Language="C#" %>

<html>
<body>
<!--Allemaal nog meer html voor zover nodig -->

<asp:Literal ID="ltrText" Runat="server" />

</body>
</html>


Dan zeg je vervolgens in je code:

C#:
1
ltrText.Text = "Blabla mijn tekst";



Ik zou zeggen, lees eens wat tutorials over ASP.NET en leer werken op de manier waarop ASP.NET bedoeld is. Al je markup in code schrijven is natuurlijk ontzettend onoverzichtelijk en lastig te onderhouden. Dynamische pagina's bestaan meestal toch voor 95% uit dezelfde markup. Die typ je dus gewoon uit als markup, en voor onderdelen die veranderen (bijv. een andere tekst in de titel ofzo) gebruik je o.a. Literals of Labels.

Doe dat, of gebruik gewoon geen ASP.NET maar pak lekker weer ASP of PHP.

[ Voor 52% gewijzigd door Not Pingu op 12-06-2005 12:16 ]

Certified smart block developer op de agile darkchain stack. PM voor info.


Verwijderd

Topicstarter
Gunp01nt schreef op zondag 12 juni 2005 @ 12:11:
Een servercontrol definieer je zo:

ASPX pagina:
code:
1
2
3
4
5
6
7
8
9
10
<%@ Page Language="C#" %>

<html>
<body>
<!--Allemaal nog meer html voor zover nodig -->

<asp:Literal ID="ltrText" Runat="server" />

</body>
</html>


Dan zeg je vervolgens in je code:

C#:
1
ltrText.Text = "Blabla mijn tekst";
Bedankt voor je hulp, maar ik heb precies gedaan wat jij zei, krijg echter niks op het scherm te zien.
Heb de Literal aangemaakt zoals je zei en aan de C# kant de Literal gevuld met dummy tekst.

Ik heb al boeken besteld, maar ik zal specifiek dit onderdeel ook uit gaan spitten, want de mogelijkheden zijn wel legio als ik het zo hoor.

[ Voor 8% gewijzigd door Verwijderd op 12-06-2005 12:32 ]


  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 01-04 20:36

Not Pingu

Dumbass ex machina

Hoe zet je je code erin dan? Gebruik je een codebehind file of doe je het tussen <% %> ?

Zo kan het bijv.:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<%@ Page Language="C#" %>

<script runat="server">
  void Page_Load(object sender, EventArgs e)
  {
    ltrText.Text = "Blabla mijn tekst";
  }
</script>

<html>
<body>
  <asp:Literal ID="ltrText" Runat="server" />
</body>
</html>


en als je dan toch naar ASP.NET gaat kijken, kijk dan ook eens naar de gratis betaversies van Visual Studio 2005 of Visual Webdeveloper 2005 : link.
Dat helpt je om echt 4x zo snel te werken.

Certified smart block developer op de agile darkchain stack. PM voor info.

Pagina: 1