[ASP.NET] Serverside tussen head tags schrijven

Pagina: 1
Acties:

  • eghie
  • Registratie: Februari 2002
  • Niet online

eghie

Spoken words!

Topicstarter
Ik heb een modulair CMS geschreven in ASP.NET. Nu wil ik daar een module voor bouwen waarbij je uit verschillende CSS'en kunt kiezen voor je website. Ik heb namelijk de front-end van de site zo opgebouwd dat hij zowat helemaal afhankelijk is van de stylesheet. Nu wil ik dat gebruikers (beheerders) hun eigen stylesheet daarvoor kunnen maken en uploaden en ook kunnen kiezen. Nu lukt mij wel om dit systeem te bouwen (voor een groot deel), maar ik stuit op een paar problemen, waarbij ik wel wat hulp kan gebruiken.

In html include je een stylesheet door:
code:
1
<link href="stylesheet.css" type="text/css" rel="stylesheet">

tussen je <head> en </head> tags te zetten. Nu wil ik dat stukje dynamisch maken. Nu heb ik die link tag een id meegegeven en runat="server" erbij gezet, maar nu kan ik hem niet in de codebehind benaderen. :? :'(

Nu dacht ik van mischien kan ik er wel een serverside control in kwijt (een literal bijv.), maar die kunnen ook niet tussen de <head> en </head> tags.

Nu blijkt dat je die <link> tags gewoon in je body kunt zetten en dat ze het dan ook wel doen, maar dat is niet netjes en heb ik liever niet. En volgens mij is die ook niet volgens de W3C regels.

Nu kun je ook hem er af vast in zetten en dan serverside die stylesheet genereren, maar dit wil ik liever niet. Als het echt niet anders kan, dan wordt het mischien wel deze manier, maar ik wil eerst zeker weten of het echt niet anders kan.

Is er geen manier om die tags serverside wel tussen je <head> en </head> te krijgen :? Of hebben jullie mischien een ander idee om hem dynamisch aan te kunnen maken.

2e probleem
Nu heb ik <link> tags erin staan, 1 voor printen en 1 voor scherm, maar nu geeft VS.NET (de debugger) aan dat hij de </link> tags niet kan vinden, maar <link> tags hebben toch geen sluit tags :? En de VS.NET IDE geeft aan dat <link> helemaal geen closing tags nodig heeft. Het gaat dus een beetje tegen elkaar in. Weet iemand hoe dit zit :? Ik heb ze wel runat="server".
quote: Parse error
Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.

Error Message: Unexpected end of file looking for </link> tag.

Source Error:

code:
1
2
3
4
5
6
7
8
Line 14: <link id="StyleSheetScreen" href="Styles.css" media="screen"
 rel="stylesheet" runat="server">
Line 15: <link id="StyleSheetPrint" href="Styles_Print.css" 
media="print" rel="stylesheet" runat="server">
Line 16: <link id="StyleSheetAll" href="Styles_All.css" media="all" 
rel="stylesheet" type="text/css" runat=server>
Line 17: <div class="Header">Blaat</div>
Line 18: </form>


Source File: c:\inetpub\wwwroot\TestCSSbeheer\WebForm1.aspx Line: 16

[ Voor 53% gewijzigd door eghie op 17-09-2004 14:24 ]


Verwijderd

het 1e probleem kan je een placeholder gebruiken geloof ik, of een literal?! zou ik even moeten nazoeken, ook zou je gewoon een functie kunnen aanroepen zoals je dat in asp deed.

ASP:
1
<% myInsertFunction %>


voor het 2e probleem moet je hem wel sluiten omdat die runat=server is. Je kan ook gewoon het volgende gebruiken:

ASP:
1
<link id=".." runat=server />

[ Voor 44% gewijzigd door Verwijderd op 17-09-2004 15:28 ]


  • Rickets
  • Registratie: Augustus 2001
  • Niet online

Rickets

Finger and a shift

Je kan een placeholder gebruiken :)
code:
1
<asp:PlaceHolder id="Head" runat="server" />

If some cunt can fuck something up, that cunt will pick the worst possible time to fucking fuck it up, because that cunt’s a cunt.


  • eghie
  • Registratie: Februari 2002
  • Niet online

eghie

Spoken words!

Topicstarter
Verwijderd schreef op 17 september 2004 @ 15:26:
het 1e probleem kan je een placeholder gebruiken geloof ik, of een literal?! zou ik even moeten nazoeken...
Rickets schreef op 17 september 2004 @ 15:30:
Je kan een placeholder gebruiken :)
code:
1
<asp:PlaceHolder id="Head" runat="server" />
Probleem is ook dat je geen server controls kunt gebruiken binnen de <head> en </head> tags. (tenminste mijn ervaring). Hij geeft dan aan van: "Object reference not set to an instance of an object." Of makkelijk gezegd, er word geen instantie aangemaakt van het object.
Verwijderd schreef op 17 september 2004 @ 15:26:
voor het 2e probleem moet je hem wel sluiten omdat die runat=server is. Je kan ook gewoon het volgende gebruiken:

ASP:
1
<link id=".." runat=server />
dat is toch de XHTML standaard :? Maar die optie werkt wel ja. Maar waar is nou eigenlijk die runat="server" bij een stylesheet goed voor dan:? Ik kan hem namelijk toch niet via de codebehind veranderen.

[ Voor 29% gewijzigd door eghie op 17-09-2004 15:51 ]


  • Rickets
  • Registratie: Augustus 2001
  • Niet online

Rickets

Finger and a shift

Met FindControl kan je hem opvragen :)

If some cunt can fuck something up, that cunt will pick the worst possible time to fucking fuck it up, because that cunt’s a cunt.


  • tijn
  • Registratie: Februari 2000
  • Laatst online: 22-03 21:36
Dit tussen de head tags:
code:
1
<link id="css" rel="stylesheet" type="text/css" runat="server" />

en dan dit in de codebehind typen:
code:
1
protected System.Web.UI.HtmlControls.HtmlGenericControl css;

en dan kun je em gewoon gebruiken. De VS.NET designer houdt er niet van trouwens, maar dat merk je vanzelf wel :). In html mode gaat het wel goed. Voor dingen als een title kun je een asp:literal gebruiken. Die zijn iets beter bestand tegen de designer.

Cuyahoga .NET website framework


  • eghie
  • Registratie: Februari 2002
  • Niet online

eghie

Spoken words!

Topicstarter
Rickets schreef op 17 september 2004 @ 15:47:
Met FindControl kan je hem opvragen :)
Thnx. _/-\o_ Nu kan ik hem wel gebruiken. Ik gebruik nu dus gewoon een literal met findcontrol.

de code:
Visual Basic .NET:
1
2
3
4
Dim ltrCSS As Literal

ltrCSS = FindControl("literal1")
ltrCSS.Text = "<link zooi />"
tijn schreef op 17 september 2004 @ 15:52:
Dit tussen de head tags:
code:
1
<link id="css" rel="stylesheet" type="text/css" runat="server" />

en dan dit in de codebehind typen:
code:
1
protected System.Web.UI.HtmlControls.HtmlGenericControl css;

en dan kun je em gewoon gebruiken. De VS.NET designer houdt er niet van trouwens, maar dat merk je vanzelf wel :). In html mode gaat het wel goed. Voor dingen als een title kun je een asp:literal gebruiken. Die zijn iets beter bestand tegen de designer.
Hey, dan werkt hij dus wel. Dan ga ik denk ik die methode toepassen, omdat ik het toch wat fijner vind werken, maar welke is het meest correct :?

[ Voor 52% gewijzigd door eghie op 17-09-2004 16:03 ]


  • tijn
  • Registratie: Februari 2000
  • Laatst online: 22-03 21:36
Dan ga ik denk ik die methode toepassen, omdat ik het toch wat fijner vind werken, maar welke is het meest correct :?
Degene die je zelf het lekkerst vindt werken :). Beide opties zorgen voor wat handwerk waarbij ik zelf de vookeur geef aan de <link ... runat="server"> variant omdat dat je dan geen FindControl etc. hoeft te doen.

[ Voor 26% gewijzigd door tijn op 17-09-2004 16:24 ]

Cuyahoga .NET website framework


  • Rickets
  • Registratie: Augustus 2001
  • Niet online

Rickets

Finger and a shift

Dan geef ik de voorkeur aan een placeholder en FindControl. Je kan dan andere elementen in je head stoppen, zoals een title, print of alternatieve stylesheets etcetera, zonder deze allemaal in je aspx pagina op te nemen.

If some cunt can fuck something up, that cunt will pick the worst possible time to fucking fuck it up, because that cunt’s a cunt.


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 11:49

Janoz

Moderator Devschuur®

!litemod

Je zou trouwens ook <link href="anderestyle.css" title="Andere" rel="alternate stylesheet" type="text/css" /> op kunnen nemen in je header en een fatsoenlijke browser bied dan alternatieven via de gui aan zonder dat de pagina opnieuw geladen hoeft te worden.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Rickets
  • Registratie: Augustus 2001
  • Niet online

Rickets

Finger and a shift

Janoz schreef op 17 september 2004 @ 16:39:
Je zou trouwens ook <link href="anderestyle.css" title="Andere" rel="alternate stylesheet" type="text/css" /> op kunnen nemen in je header en een fatsoenlijke browser bied dan alternatieven via de gui aan zonder dat de pagina opnieuw geladen hoeft te worden.
Volgens mij is de bedoeling dat beheerders van een site in het CMS een stylesheet kunnen toewijzen aan een site, niet dat bezoekers uit meerdere stylesheets kunnen kiezen. Maar ik kan me vergissen :P

If some cunt can fuck something up, that cunt will pick the worst possible time to fucking fuck it up, because that cunt’s a cunt.


  • eghie
  • Registratie: Februari 2002
  • Niet online

eghie

Spoken words!

Topicstarter
Rickets schreef op 17 september 2004 @ 16:46:
[...]

Volgens mij is de bedoeling dat beheerders van een site in het CMS een stylesheet kunnen toewijzen aan een site, niet dat bezoekers uit meerdere stylesheets kunnen kiezen. Maar ik kan me vergissen :P
Ik zou het zelf niet beter kunnen zeggen. ;) :P

En aan meerdere stylesheets heb ik gedacht ja en dat ben ik ook van plan. Kun je trouwens een oneindig aantal alternate stylesheets plaatsen, want dan kan ik beter literal gebruiken, omdat ik de beheerder die mogelijkheid ook wil geven, om alternatieve stylesheets te gebruiken.
tijn schreef op 17 september 2004 @ 15:52:
...

De VS.NET designer houdt er niet van trouwens, maar dat merk je vanzelf wel :). In html mode gaat het wel goed. Voor dingen als een title kun je een asp:literal gebruiken. Die zijn iets beter bestand tegen de designer.
haha, ja ik merk het. Hopen dat het in VS .NET 2005 is opgelost en dat ze ook wat meer media types ondersteunen, want braille en speech en projection zitten er bijv niet bij terwijl ze wel in de w3c specs staan.

Dat word dus literal gebruiken, omdat het nu voor mij meer voordelen opleverd.

[ Voor 36% gewijzigd door eghie op 17-09-2004 17:21 ]


  • Rickets
  • Registratie: Augustus 2001
  • Niet online

Rickets

Finger and a shift

Niet echt oneindig natuurlijk ;) maar als jij bijv. 10 alternatieve stylesheets wilt kan dat ja :)

If some cunt can fuck something up, that cunt will pick the worst possible time to fucking fuck it up, because that cunt’s a cunt.


  • eghie
  • Registratie: Februari 2002
  • Niet online

eghie

Spoken words!

Topicstarter
Janoz schreef op 17 september 2004 @ 16:39:
Je zou trouwens ook <link href="anderestyle.css" title="Andere" rel="alternate stylesheet" type="text/css" /> op kunnen nemen in je header en een fatsoenlijke browser bied dan alternatieven via de gui aan zonder dat de pagina opnieuw geladen hoeft te worden.
Welke fatsoenlijke browsers zijn er dan :? ;) Want ik krijg namelijk, maar geen gui om zo'n alternate stylesheet te kiezen en ook niet ergens in een menu ofzo (of kijk scheel). Zowel in IE 6 als Mozilla Firefox 0.9. :?

offtopic:
hmm.. dit had ik eig ook wel in mn vorige post kunnen drukken. 8)7 O-)

[ Voor 14% gewijzigd door eghie op 17-09-2004 17:28 ]


  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 14:15
eghie schreef op 17 september 2004 @ 17:27:
[...]

Welke fatsoenlijke browsers zijn er dan :? ;) Want ik krijg namelijk, maar geen gui om zo'n alternate stylesheet te kiezen en ook niet ergens in een menu ofzo (of kijk scheel). Zowel in IE 6 als Mozilla Firefox 0.9. :?
In FF krijg je naast je statusbar een icoontje Afbeeldingslocatie: http://erik.kabel.utwente.nl/got/alternate.png

Klikken en kiezen is het devies :)

Regeren is vooruitschuiven


  • eghie
  • Registratie: Februari 2002
  • Niet online

eghie

Spoken words!

Topicstarter
T-MOB schreef op 17 september 2004 @ 17:33:
[...]


In FF krijg je naast je statusbar een icoontje [afbeelding]

Klikken en kiezen is het devies :)
Dan doe ik toch iets verkeerd. Ik krijg dat icoontje niet te zien.

dit is mn code:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<link id="CSS_Screen" media="screen" href="Styles.css" type="text/css" 
rel="stylesheet"/>
<link id="CSS_Print" media="print" href="Styles_Print.css" type="text/css" 
rel="stylesheet"/>
<link id="CSS_All" media="all" href="Styles_All.css" type="text/css" 
rel="stylesheet"/>
<link id="CSS_Braille" media="braille" href="Styles_Braille.css" type="text/css" 
rel="stylesheet"/>
<link id="CSS_Projection" media="projection" href="Styles_Projection.css" 
type="text/css" rel="stylesheet"/>
<link id="CSS_Speech" media="speech" href="Styles_Speech.css" type="text/css" 
rel="stylesheet"/>
<link id="CSS_Alternate" media="All" href="Styles_Alternate1.css" type="text/css" 
rel="alternate"/>
Dit is even testcode om de boel eens even te testen voordat ik het toepas.
Ik hoor hierbij toch wel een mogelijkheid te krijgen voor alternatieve stylesheet te kiezen :? Want ik heb 2 stylesheets erin staan voor media="All".

1 met rel="Stylesheet"
en 1 met rel="Alternate"

Wat doe ik verkeerd. Ik zie de fout niet eig. De overige stylesheets laad hij wel, dus de code is volgens mij wel goed.

Mozilla ziet hem zo:
Afbeeldingslocatie: http://members.chello.nl/hw.eghuizen/images/thumb_stylesheets.jpg

[ Voor 103% gewijzigd door eghie op 20-09-2004 11:58 ]


  • Rickets
  • Registratie: Augustus 2001
  • Niet online

Rickets

Finger and a shift

Stylesheet
Refers to an external style sheet. See the section on external style sheets for details. This is used together with the link type "Alternate" for user-selectable alternate style sheets.
rel="alternate stylesheet" dus :)
En dan een title geven, zodat hij in het stylesheetmenu van Firefox komt.

[ Voor 15% gewijzigd door Rickets op 20-09-2004 13:56 ]

If some cunt can fuck something up, that cunt will pick the worst possible time to fucking fuck it up, because that cunt’s a cunt.


  • eghie
  • Registratie: Februari 2002
  • Niet online

eghie

Spoken words!

Topicstarter
Rickets schreef op 20 september 2004 @ 13:55:
[...]

rel="alternate stylesheet" dus :)
En dan een title geven, zodat hij in het stylesheetmenu van Firefox komt.
Ach dat is het dus. Die title geven. Dat is dus wel het laatste waar ik aan dacht.

Die rel="alternate stylesheet" had ik ook al geprobeerd, maar dat hielp niet, maar die moet ik dus in combinatie met title gebruiken. Thnx _/-\o_
Pagina: 1