Avatar billede casper_skovgaard Nybegynder
03. september 2004 - 10:08 Der er 11 kommentarer og
2 løsninger

Hvodan skriver jeg til html-headeren fra codebehind?

Er det muligt at tilføje fx. script-tags til html-head fra codebehind filen, uden at bruge code blocks?

Formålet er at jeg dynamisk kan ændre/sætte title, javascript og stylesheets fra en base class som alle mine side arver fra. Dette skal helst kunne gøres uden der skal skrives noget kode i html filen.
Avatar billede repsak Nybegynder
03. september 2004 - 12:17 #1
En mulighed er at lave Literals på hver post:
<html>
<head>
<asp:LIteral ... id="lit_title">
<asp:LIteral ... id="lit_css">
<asp:LIteral ... id="lit_meta">
<asp:LIteral ... id="lit_javascript">
...

you see the point?
Avatar billede repsak Nybegynder
03. september 2004 - 12:18 #2
...og så fra Base.Page_Load:
(C#)
lit_title.Text = "Titel";
lit_css.Text = "...blablabla..."
...
Avatar billede casper_skovgaard Nybegynder
03. september 2004 - 12:50 #3
Problemet med den løsning er at jeg i hver html fil skal indsætte et antal asp tags. Og det er netop det jeg vil undgå.
Avatar billede jepsen999 Nybegynder
03. september 2004 - 16:48 #4
Du kan nøjes med at indsætte en placeholder i head:
<head>
...
<asp:Placeholder id="plh" runat="server"></asp:Placeholder>
</head>

og derefter tilføje dine literalcontrols fra codebehind:

protected override void CreateChildControls()
{
    base.CreateChildControls ();
    plh.Controls.Add(new LiteralControl("<meta blah blah>"));
    plh.Controls.Add(new LiteralControl("<meta blah2 blah2>"));
}
Avatar billede repsak Nybegynder
04. september 2004 - 10:35 #5
casper_skovgaard -> der er da ingen der siger at du SKAL have én literal for hver. En literal er beregnet til at indsætte f.eks. html, så den kunne jo meget passende indeholde din header. Du slipper nok ikke for en asp-kontrol. (ellers vil jeg meget gerne se løsningen ;-))
Avatar billede burningice Nybegynder
04. september 2004 - 14:46 #6
kan man ikke lave noget ala

<html>
<head runat="server" id="myHeader">
</head>
<body>
</body>
</html>

codebehind:

GenericHtmlControl header = this.FindControl("myHeader");
header.Controls.Add(new LiteralControl("<Title>Titel</title>");
Avatar billede repsak Nybegynder
04. september 2004 - 17:15 #7
cyberfessor -> hehe ok, erstat asp-kontrol med serverside-kontrol ;-)
Avatar billede burningice Nybegynder
05. september 2004 - 02:49 #8
tja... vi kan da vist godt blive enige om, at hvis man vil tilgå noget fra codebehind, så bliver man NØDT til at have en eller anden form for server-side control at skrive til.
Avatar billede casper_skovgaard Nybegynder
05. september 2004 - 20:49 #9
Jeg håbede lidt på at der var en eller anden rigtig smart løsning, så man ikke var nødt til at tilføje en kontrol. Cyberfessor's forslag kunne være en rigtig god løsning, måske bliver det muligt i en fremtidig version. Men jeg holder mig til repsak's løsning så repsak smid lige et svar, igen:)
Avatar billede repsak Nybegynder
06. september 2004 - 07:48 #10
hehe okeedokee :o)
Avatar billede casper_skovgaard Nybegynder
06. september 2004 - 08:54 #11
Tak for jeres svar :)
Avatar billede veronica Nybegynder
07. september 2004 - 22:01 #12
Har du forsøgt dig med nedarvning ? Jeg har lavet en template ved at lave en klasse, som nedarver fra Page-classen - nye sider skal så bare nedarve fra min template klasse i stedet for (som default) at nedarve fra Page-klassen.
Inspiration: http://aspalliance.com/articleViewer.aspx?aId=91&pId=
Avatar billede casper_skovgaard Nybegynder
08. september 2004 - 13:26 #13
tak veronica, det kigger jeg lidt nærmere på :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester