[ASP.NET] Website opbouw technieken best practices

Pagina: 1
Acties:

  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Momenteel ben ik bezig met een ASP.NET webite (C#) waar ik tegen een aantal problemen aanloop. Ik heb nog vrij weinig ervaring in het bouwen van websites in ASP.NET, maar wel veel websites in ASP en PHP heb gebouwd.

In ASP bouwde ik websites via Server side includes als volgt op:
Visual Basic:
1
2
3
4
<!--#include file="inc/header.inc"-->
<!--#include file="inc/left.inc"-->
Hier komt de content van de pagina
<!--#include file="inc/footer.inc"-->   

Dit zorgt ervoor dat de vaste elementen van een pagina (Header, footer, linker menu) altijd uniform geplaatst worden en ik me alleen met de content van 1 pagina hoef te concentreren.

In ASP.NET ben ik volgens dit principe website gaan opdelen in user controls. In ben er inmiddels achter dat deze opzet bad practice is in ASP.NET. Ik liep bijv. tegen het volgende probleem aan:
ASP.NET staat het toe dat je maar 1 form met runat=server mag gebruiken. Nu had ik de begin <form> tag in een aparte header user control staan en de eind </form> tag in een aparte footer usercontrol. ASP.NET laad in dit geval de pagina niet eens omdat de begin en eind tags in 1 bestand moeten staan.

Daarna had ik voor een iets andere opzet gekozen waarbij ik begin en eind tags wel altijd bij elkaar plaatsten:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<html>
<head>
  <title>Titel</title>
</head>
<body>
<form runat=server>
<uc1:page id=Header runat="server"></uc1:page>
<uc1:page id=Menu runat="server"></uc1:page>
<div id="content">
Hier komt de content
</div>
</form>
</body>
</html>

Dit werkt op zich goed, maar dit betekent dat ik voor elke ASPX pagina dezelfde template code weer moet gaan dupliceren dus dat is niet echt lekker onderhoudbaar.

Graag zou ik willen weten welke technieken jullie gebruiken om een ASP.NET website netjes op te zetten. Of wellicht hebben jullie links naar websites waar dit wordt uitgelegd.

It’s nice to be important but it’s more important to be nice


  • ThunderNet
  • Registratie: Juni 2004
  • Laatst online: 15:57

ThunderNet

Flits!

Als je nu echt net begint? Zou ik naar Masterpages kijken :) ideaal voor jouw doel.
www.asp.net staat er dacht ik wel het een en ander over uitgelegd

(Masterpages, zijn nieuw bij ASP.NET 2.0)

Heb je liever vooraf, of achteraf, dat ik zeg dat ik geen flauw idee heb wat ik doe?


  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
ThunderNet schreef op donderdag 17 november 2005 @ 20:38:
Als je nu echt net begint? Zou ik naar Masterpages kijken :) ideaal voor jouw doel.
www.asp.net staat er dacht ik wel het een en ander over uitgelegd

(Masterpages, zijn nieuw bij ASP.NET 2.0)
Ik heb even gekeken op http://aspnet.4guysfromrolla.com/articles/010505-1.aspx. Hier lees ik ook het volgende:
Unfortunately with ASP.NET 1.x there is no support for MasterPages in Visual Studio .NET. Thankfully this has been changed with the upcoming ASP.NET 2.0. In Visual Studio 2005, there is rich, WYSIWYG support for MasterPages.
Ik zou het liefst meteen naar 2005 over willen stappen, maar ja eerst moeten er centen van de baas komen voor een nieuwe licentie ;) Ik vermoed dat er in ASP.NET 1.1 toch nog wel betere manieren bestaan dan de manier die ik nu gebruik?

It’s nice to be important but it’s more important to be nice


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

Not Pingu

Dumbass ex machina

Allereerst is het geen kwestie van kijken hoe je de PHP manier van werken kunt realiseren in ASP.NET, want die laatste is gewoon fundamenteel anders.

Een van de dingen die ik in het begin veel gebruikte, was een (of meerdere) template maken in de vorm van een .aspx pagina. Daar gewoon al je HTML in, en op de plekken waar je dynamische content moet komen, plaats je placeholders.

Je dynamische stukken content/functionaliteit werk je uit in aparte usercontrols, die je dan naar believen in de placeholders kunt laden.


Je pagina:

HTML:
1
2
3
4
5
6
7
8
9
<html>
<body>
  <h1>Titel</h1>
<div>vaste content, menu ofzo?</div>
<div> <!-- dynamische content -->
  <asp:Placeholder id="plcContent" runat="server" />
</div>
</body>
</html>


en dan je code:
C#:
1
2
Control mijncontent = Page.LoadControl("Path/naar/je/usercontrol.ascx");
plcContent.Controls.Add(mijncontent);


En wil je een stapje verder, dat werk je je templates ook uit als UserControls ipv. pages, en heb je gewoon 1 index.aspx met misschien wat basis-html en een placeholder waarin je dan je template laadt. Je kunt dan een class maken die ervoor zorgt dat de placeholders van een template gevuld worden, en als je al je templates die class laat inheriten, ben je een heel eind.

Maar als je echt begint met ASP.NET is het aan te raden een boek te huren / kopen en vanaf het begin op de ASP.NET manier te leren werken. Ik ben van classic ASP naar ASP.NET gegaan en het kost even wat moeite om die nieuwe manier van denken aan te leren.

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


  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Gunp01nt schreef op donderdag 17 november 2005 @ 21:12:
Een van de dingen die ik in het begin veel gebruikte, was een (of meerdere) template maken in de vorm van een .aspx pagina. Daar gewoon al je HTML in, en op de plekken waar je dynamische content moet komen, plaats je placeholders.
Je dynamische stukken content/functionaliteit werk je uit in aparte usercontrols, die je dan naar believen in de placeholders kunt laden.
Dynamische een ascx laden in een placeholder laden heb ik net even getest en werkt inderaad wel fijn.
En wil je een stapje verder, dat werk je je templates ook uit als UserControls ipv. pages, en heb je gewoon 1 index.aspx met misschien wat basis-html en een placeholder waarin je dan je template laadt. Je kunt dan een class maken die ervoor zorgt dat de placeholders van een template gevuld worden, en als je al je templates die class laat inheriten, ben je een heel eind.
Dit is dus het principe 1 index.php met dynamische PHP includes als ik het goed begrijp? Ik denk dat ik met die PlaceHolder techniek inderdaad wel een stuk flexibeler te werk kan gaan.
Maar als je echt begint met ASP.NET is het aan te raden een boek te huren / kopen en vanaf het begin op de ASP.NET manier te leren werken. Ik ben van classic ASP naar ASP.NET gegaan en het kost even wat moeite om die nieuwe manier van denken aan te leren.
Ik heb hier een boek liggen Essential ASP.NET. Best een goed boek, maar dit soort technieken vind je er niet in terug. Bedank voor de adviezen zover.

It’s nice to be important but it’s more important to be nice


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

Not Pingu

Dumbass ex machina

pjonk schreef op donderdag 17 november 2005 @ 21:40:

Dynamische een ascx laden in een placeholder laden heb ik net even getest en werkt inderaad wel fijn.
Je hoeft overigens niet perse een placeholder te gebruiken, in elke server control kun je andere controls injecteren, dus ook een <div runat="server" />
Dit is dus het principe 1 index.php met dynamische PHP includes als ik het goed begrijp? Ik denk dat ik met die PlaceHolder techniek inderdaad wel een stuk flexibeler te werk kan gaan.

Ik heb hier een boek liggen Essential ASP.NET. Best een goed boek, maar dit soort technieken vind je er niet in terug. Bedank voor de adviezen zover.
Het mooie van dat soort boeken is dat je er technieken uit haalt waar je zelf nooit op gekomen zou zijn, dus zou je er ook niet op gegoogled hebben. En het legt een goede basis, wat goed van pas komt omdat je zeker in het begin nog wel kunt verzuipen in de mogelijkheden van ASP.NET.

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

Pagina: 1