[ASP.NET] Template engine vraagje

Pagina: 1
Acties:

  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 15-04 15:52
Hoi,

Ik ben met een template engine bezig, en nu liep ik tegen het volgende probleem op.

De client komt binnen op 1 pagina die een pageID uitleest. Aan de hand van dit
page id haal ik een PageType op uit de database, en ook nog een template bestand (HTML) en in de pageType Tabel staat een link naar een ASPX bestand. In dit ASPX bestand staan servercontrols (die een codebehind hebben).

Nu is het de bedoeling dat dat ASPX bestand getoont word (met de template) en de server controls uit gaat voeren. Gebeurd dit ook of word de ASPX niet geparsed?
Of zit er ook een server.execute methode in ASP.NET? Of kan ik de client gewoon redirecten naar dit ASPX bestand?

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 22:24

gorgi_19

Kruimeltjes zijn weer op :9

server.execute
Kijk hier wel mee uit; het verneukt evt. HTTPCompressie mbv blowery httpcompression module en kan viewstate fouten veroorzaken. Mijdt het zoveel mogelijk.

Waarom werk je trouwens met meerdere aspx pagina's voor meerdere templates? Waarom niet 1 .aspx pagina, waarop je een .ascx pagina laadt?

Voorbeeldje:
ASP.NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
Imports system.web.ui
Public Class MyCustomControl
    Inherits System.Web.UI.UserControl

#Region "Private vars"

    Private __baseskin As String = "MyBaseSkin.ascx"

#End Region

Private Sub InitPage(sender as object, e as eventargs) handles mybase.Init



    '''-----------------------------------------------------------------------------
    ''' <summary>
    ''' Load a page and fill the values
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    ''' <history>
    '''     [Patrick Bouwens]   2/15/2004   Created
    ''' </history>
    '''-----------------------------------------------------------------------------
    Private Sub LoadPage(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load

        If Page.IsPostBack Then Exit Sub

        Dim skinnedControl As System.Web.UI.Control = Page.LoadControl(Me.BaseSkin)
        Dim lblHeading As System.Web.UI.WebControls.Label = CType(skinnedControl.FindControl("heading"), System.Web.UI.WebControls.Label)

        '''-----------------------------------------------------------------------------
        ''' <summary>
        ''' If this var is not nothing, the item is included in the template
        ''' </summary>
        '''-----------------------------------------------------------------------------
        If Not lblHeading Is Nothing Then

            lblHeading.Text = "MyCustomText"

        End If

    End Sub

#Region "Public Properties"

    '''-----------------------------------------------------------------------------
    ''' <summary>
    ''' Create a custom skin control.
    ''' </summary>
    ''' <value></value>
    ''' <remarks></remarks>
    ''' <history>
    '''     [Patrick Bouwens]   2/15/2004   Created
    ''' </history>
    '''-----------------------------------------------------------------------------
    Public Property BaseSkin() As String
        Get
            Return Me.__baseskin
        End Get
        Set(ByVal Value As String)
            Me.__baseskin = Value
        End Set
    End Property

#End Region

End Class

[ Voor 109% gewijzigd door gorgi_19 op 01-03-2004 11:50 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 15-04 15:52
Dat is ook wel een idee idd.
Ik ga er even naar kijken....

Maar parsed hij de aspx pagina wel?

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 22:24

gorgi_19

Kruimeltjes zijn weer op :9

4of9 schreef op 01 maart 2004 @ 11:52:
Dat is ook wel een idee idd.
Ik ga er even naar kijken....

Maar parsed hij de aspx pagina wel?
Nee, maar dat hoeft ook niet. De 'code-behind' is namelijk leidend. Je .ascx bestand komt nu in de plaats van je .aspx bestand. Je .aspx bestand is een 'dom' bestand wat bijna een lege pagina is. Je .ascx bestand zorgt voor de template.

Je code behind zoekt in de template naar je controls en vult deze.

Je hebt bijvoorbeeld:

login.aspx
login-normal.ascx
login-special.ascx

1 pagina, met 2 templates; normal en special. En deze laatste 2 zet je dan in je database.

[ Voor 17% gewijzigd door gorgi_19 op 01-03-2004 11:55 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 15-04 15:52
oke even op een rijtje:

Client komt op pagina x. Die pagina gaat de DB querien op zoek naar pagetype en template.

Client word geredirect naar pagina b (aspx) deze pagina word uitgevoerd en haalt een ascx op aan de hand van de id's van pagina a.

(template en pagetype zijn in mijn ontwerp verschillend omdat de template van een externe partner af kan komen)

De pagetype bepaald hoe dat de content geplaatst word.

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


Verwijderd

Je bent niet de enige die hiermee worstelt hoor. Maar gelukkig is dit ASP.NET 2.0 opgelost door gebruikt te maken van Masterpages. Masterpages zou je kunnen zien als een template. Helaas laat ASP.NET 2.0 nog even opzich wachten.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 22:24

gorgi_19

Kruimeltjes zijn weer op :9

4of9 schreef op 01 maart 2004 @ 12:03:
oke even op een rijtje:

Client komt op pagina x. Die pagina gaat de DB querien op zoek naar pagetype en template.

Client word geredirect naar pagina b (aspx) deze pagina word uitgevoerd en haalt een ascx op aan de hand van de id's van pagina a.

(template en pagetype zijn in mijn ontwerp verschillend omdat de template van een externe partner af kan komen)

De pagetype bepaald hoe dat de content geplaatst word.
Dan heb je geen template, maar een hele aparte pagina. Welke van de twee is het nu?

In mijn beleving is een template dezelfde content in een ander jasje.

de procedure die ik heb geschetst was:

1. Persoon komt op een pagina.
2. Uit de database worden de gegevens en paginatype geladen
3. De template wordt in de huidige pagina geladen; er komt dus GEEN redirect aan te pas
4. De template wordt geanalyseerd en de acties worden uitgevoerd c.q. code aan de control gehangen.
5. Pagina wordt weergegeven.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 22:24

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 01 maart 2004 @ 12:06:
Je bent niet de enige die hiermee worstelt hoor. Maar gelukkig is dit ASP.NET 2.0 opgelost door gebruikt te maken van Masterpages. Masterpages zou je kunnen zien als een template. Helaas laat ASP.NET 2.0 nog even opzich wachten.
ASP.Net 2.0 is leuk, maar daar moet je het komende jaar nog niets van verwachten; je kan ook niet tegen klanten zeggen: "Kom over een jaar maar terug, want dan ondersteunt de taal het". Die willen ook nu een oplossing.

Verder ben ik heel benieuwd naar de masterpage's hoe dat gaat uitpakken.

[ Voor 8% gewijzigd door gorgi_19 op 01-03-2004 12:10 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 15-04 15:52
Oke ik moet alleen mijn ontwerp wat aanpassen merk ik.
Alleen onze templates kunnen ook van een externe partner komen als HTML file en eromheen gezet worden.

Het idee is me bijna duidelijk :P

Alleen nog even uitvogelen hoe ik die ascx pagina's dynamisch laad voor dat de pagina weer gegeven word.

over ASP.NET 2.0:

Ik hoorde laatst op een cursus dat microsoft de code behind weer af wil gaan schaffen en terug wil gaan naar code in de pagina...

is het dus handig om met codebehind te werken of de code in de pagina te zetten?

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 22:24

gorgi_19

Kruimeltjes zijn weer op :9

Alleen onze templates kunnen ook van een externe partner komen als HTML file en eromheen gezet worden.
Alleen 1 regel toevoegen bovenaan dat het een control betreft :P
Alleen nog even uitvogelen hoe ik die ascx pagina's dynamisch laad voor dat de pagina weer gegeven word.
Dat staat in de code.. :P Zie het gedeelte van: "Page.Loadcontrol"
Ik hoorde laatst op een cursus dat microsoft de code behind weer af wil gaan schaffen en terug wil gaan naar code in de pagina...
Dan weet jij meer dan mij. Ze willen idd af van de codebehind, omdat deze een sterke verbondenheid met de achterliggende pagina doen (test.ascx en test.ascx.vb). Ze willen nu partial classes gaan invoeren, waardoor je een ander probleem creeert.

Inline code lijkt me helemaal niet flexibel, eigenlijk :X Lijkt me ook heel sterk dat ze daar naar terug willen.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 15-04 15:52
ze vertelden het op die cursus, maar mischien dachten zij dat afschaffen van codebehind automagisch betekend dat ze terug gaan naar inline code....

ik zag idd je stukje code hoe je dat laad...

Het begint al vorm te krijgen hoe ik dit probleem kan tackelen....

thx!

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...

Pagina: 1