[asp.net] Invoegen van templates uit 1 classe

Pagina: 1
Acties:

  • ibizadesire
  • Registratie: Juli 2003
  • Laatst online: 30-07 21:14
Ik heb hier een asp.net site die steeds dezelfde onderdelen per pagina moet tonen. Ik heb dus bovenaan een header, onderaan een footer, en links de navigatie. Nu kan ik deze aparte delen includen met <!--#include file="diePagina.asp"-->

Aangezien ik zit te denken om een 5 à 10 van deze includes per pagina te doen lijkt het mij tijdrovend om telkens een include te doen. Daarom zou ik een classe siteOnderdelen schrijven met enkele methodes (toonheader,toonfooter, toonnavigatie,.... Hier een uitwerking voor de header:

************
Public Class siteOnderdelen

Inherits Object
Public Function showHeader()
Dim schrijf As System.Web.HttpContext

schrijf.Current.Response.Write("" & _
"<html>" & _
"<head>" & _
"<title>bla</title>" & _
"<script language='JavaScript' src='includes/scripts.js' type='text/javascript'></script>" & _
"<script language='JavaScript' src='includes/menuscript.js' type='text/javascript'></script>" & _
"<link rel=StyleSheet href='includes/styles.css' type='text/css'>" & _
"<style type='text/css'>@import url('includes/stylesform.css');</style>" & _
"</head>" & _
"<body background='img/bg_general.gif' marginwidth='0' marginheight='0' onResize='menuSetPosition()'>")
End Function
End Class
***************

In mijn aspx.vb pagina doe ik dan in de pageload:
*****
Dim siteOnderdelen As New siteOnderdelen
siteOnderdelen.showHeader()
*****

Nu dit werkt perfect, maar nu komt mijn probleem. Ik zou deze gedeelten willen plaatsen op voorhand gedefinieerde plaatsen. Ik zit dan te denken om met labels te werken. Aangezien ik in de header de html en body tag open (class) staat deze niet meer vermeld in de aspx pagina. Hierdoor kan ik niet meer naar de design view van die pagina gaan omdat die hoofd tags ontbreken.

Iemand er een oplossing voor? Of ben ik fout bezig?
thx !!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

1e vraag: Waarom ben je overgestapt naar ASP.Net?

Je doet zo ongeveer alles om de ASP.Net manieren te omzeilen en hanteert standaard de ASP methodiek.

Hint:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Imports System.Web
Imports System.Web.UI

Public Class CustomControl
    Inherits UserControl

    Private Sub LoadPage(Sender as object, E as EventArgs) handles MyBase.Load

      ' etc.

    End if


End Class

2e. Maak 1 .aspx pagina aan, en hang er verschillende usercontrol files in.
3e tip: Zit je volgens mij IBuySpyPortal na te bouwen. Kijk hier na, deze heeft imho een iets betere structuur en laat meer zien van een ASP.Net werkwijze.

[ Voor 75% gewijzigd door gorgi_19 op 14-10-2003 13:58 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • ibizadesire
  • Registratie: Juli 2003
  • Laatst online: 30-07 21:14
Heb ik ook al gedacht, maar dan ga ik weer met aparte files beginnen eigenlijk.
Of maak ik mij (onterecht) te veel zorgen over het snelheidsverschil?

Maar krijg ik dan niet hetzelfde probleem zoals ik hierboven beschreef ivm de hoofdtags body e.d.?

<%@ Register Tagprefix="nx" Tagname="template" Src="header.ascx" %>
<nx:template runat="server" id="Mastertemplate"> </nx:template>

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

ibizadesire schreef op 14 oktober 2003 @ 14:06:
Heb ik ook al gedacht, maar dan ga ik weer met aparte files beginnen eigenlijk.
Of maak ik mij (onterecht) te veel zorgen over het snelheidsverschil?

Maar krijg ik dan niet hetzelfde probleem zoals ik hierboven beschreef ivm de hoofdtags body e.d.?

<%@ Register Tagprefix="nx" Tagname="template" Src="header.ascx" %>
<nx:template runat="server" id="Mastertemplate"> </nx:template>
Kan je er imho net zo goed een basistemplate maken. Maak een custom Page class, zet hier de code in en ga niet met includes werken.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • ibizadesire
  • Registratie: Juli 2003
  • Laatst online: 30-07 21:14
Ik heb het nu met usercontrols gedaan. Werkt goed.
Probleem dus opgelost :*)

Bedankt gorgi_19 !

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

* gorgi_19 is wel heel benieuwd hoe het nu opgelost is.. :P

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • ibizadesire
  • Registratie: Juli 2003
  • Laatst online: 30-07 21:14
Dan krijgt gorgi_19 een antwoord natuurlijk :*) :*)

Ik heb het dus met user controls gedaan zoals jij ook voorstelde. Werk perfect. Enkel was het probleem van mijn hoofdtags (html en body) hiermee niet opgelost om het design van de pagina te bekijken. Oplossing hiervoor is om deze tags toch te schrijven. Zo wordt de pagina nu eigenlijk 2 keer geopent met die tags. Dit is natuurlijk niet de bedoeling.
Oplossing: onload van die pagina commentaar text openen ( <!-- ) en na de open tags commentaar terug sluiten ( --> )

Zo ziet de pagina er dan uit:

************
<!--
<html>
<body>
-->


<HTML>
<HEAD>
<title></title>
<script language='JavaScript' src='includes/scripts.js' type='text/javascript'></script>
<script language='JavaScript' src='includes/menuscript.js' type='text/javascript'></script>
<link rel="StyleSheet" href='includes/styles.css' type='text/css'>
<style type='text/css'>@import url('includes/stylesform.css');
</style>
</HEAD>
<body onResize='menuSetPosition()'>
***********

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Erhm.. Waar komen die 2 tags dan vandaan?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • ibizadesire
  • Registratie: Juli 2003
  • Laatst online: 30-07 21:14
Dit bedoel je?

*****
<!--
<html>
<body>
-->
*****

Deze zijn nodig om in de pagina de "design" mode te kunnen aanroepen. Als deze er niet staan weigert studio dit te tonen. Deze tags staan in de usercontrol, waardoor de pagina denkt dat ze niet bestaan.

Ik heb overigens nog wel een probleem met het sturen van een waarde van een variabele naar de usercontrol :?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

ibizadesire schreef op 15 October 2003 @ 10:13:
Dit bedoel je?

*****
<!--
<html>
<body>
-->
*****

Deze zijn nodig om in de pagina de "design" mode te kunnen aanroepen. Als deze er niet staan weigert studio dit te tonen. Deze tags staan in de usercontrol, waardoor de pagina denkt dat ze niet bestaan.
:? Da's een probleem van Visual Studio. Die HTML-editor is, als we het positief benaderen, ontzettend brak. Maar die editor is een hulpmiddel, geen leidraad.
Ik heb overigens nog wel een probleem met het sturen van een waarde van een variabele naar de usercontrol :?
En het probleem is?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • ibizadesire
  • Registratie: Juli 2003
  • Laatst online: 30-07 21:14
gorgi_19 schreef op 15 oktober 2003 @ 10:18:
[...]

:? Da's een probleem van Visual Studio. Die HTML-editor is, als we het positief benaderen, ontzettend brak. Maar die editor is een hulpmiddel, geen leidraad.

[...]

En het probleem is?
Klopt, de editor is wat brak, maar toch een goed hulpmiddel. Tot over een maand schreef ik volledige sites in een teksteditor. De editor helpt om bv labels e.d. te plaatsen. Toch kijk ik 90% van de tijd naar de HTML ;)

Ik zou vanuit mijn pagina een titel willen meegeven aan de usercontrol. Zodanig dat de UC deze dan op de juiste plaats kan weergeven. Eigenlijk heel eenvoudig 8)

Heb al wat met de Get en Set properties zitten spelen, maar kwam er even niet uit. We zoeken dus verder... :+

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Mja.. 'k heb het HTML-gedeelte een beetje afgezworen en werk nu meer in de code-behind. Dit geeft imho meer flexibiliteit en ik heb een enorme hekel aan een enorme bende .ascx bestanden, zeker als je 1 standaardtemplate wil hebben. :)

Paginatitel meegeven aan een usercontrol? Ik zou zeggen: Doe lui; laadt in je global.asax de paginatitel in HttpContext.Items-collectie, en dan is deze bereikbaar in zowel je pagina als je usercontrol.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • ibizadesire
  • Registratie: Juli 2003
  • Laatst online: 30-07 21:14
gorgi_19 schreef op 15 oktober 2003 @ 10:34:
Paginatitel meegeven aan een usercontrol? Ik zou zeggen: Doe lui; laadt in je global.asax de paginatitel in HttpContext.Items-collectie, en dan is deze bereikbaar in zowel je pagina als je usercontrol.
Is inderdaad een oplossing, maar wellicht dat er beter bestaan 8)

  • ibizadesire
  • Registratie: Juli 2003
  • Laatst online: 30-07 21:14
Ik heb een beter manier gevonden.

In de usercontrol declareer je de variabele als public
--> Public title As String

In de pagina waarbinnen de usercontrol wordt getoond geef je de variabele mee als parameter
--> <uc:Header id="Header" runat="server" title="Hier vul je dan de titel in"/>

Voila, heel eenvoudig dus.
Hopelijk help ik hier mensen mee ;)

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

ibizadesire schreef op 15 October 2003 @ 15:36:
Ik heb een beter manier gevonden.

In de usercontrol declareer je de variabele als public
--> Public title As String

In de pagina waarbinnen de usercontrol wordt getoond geef je de variabele mee als parameter
--> <uc:Header id="Header" runat="server" title="Hier vul je dan de titel in"/>

Voila, heel eenvoudig dus.
Hopelijk help ik hier mensen mee ;)
Maak er dan tenminste nog een Property van :) En ik had je vraag iets anders opgevat; jouw methodiek kan idd ook. :)

* gorgi_19 vindt public vars nogal onbeheersbaar...

[ Voor 12% gewijzigd door gorgi_19 op 15-10-2003 15:39 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • ibizadesire
  • Registratie: Juli 2003
  • Laatst online: 30-07 21:14
gorgi_19 schreef op 15 October 2003 @ 15:39:
[...]

Maak er dan tenminste nog een Property van :) En ik had je vraag iets anders opgevat; jouw methodiek kan idd ook. :)

* gorgi_19 vindt public vars nogal onbeheersbaar...
Verklaar je nader
Pagina: 1