Toon posts:

[ASP.NET] Title at runtime aanpassen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Is het mogelijk om de titel van een webpagina aan te passen?

Ik heb al geprobeerd:
C#:
1
2
3
<HEAD id="head" runat="server">
   <TITLE id="title" runat="server"></TITLE>
</HEAD>

Maar 'title' komt niet beschikbaar in m'n codebehind. Het is volgens mij wel mogelijk om 't in JavaScript op te lossen mbv InnerText oid :? maar ik wil 't in m'n C#-code kunnen verwerken...

Is het mogelijk om de titel van een webpage in m'n C#-codebehind aan te passen?

Ander probleempje:
Alles (zelfs scrollbars) is nu zo'n beetje aan te passen met een stylesheet (CSS), maar de kleur van de titelbalk is nog wel afhankelijk van de Windowskleuren van de client. Of vergis ik me? (Ik hoop 't! :))

Verwijderd

Titel kun je simpel aanpassen in javascript, maar dat wil je niet lees ik net
De titlebalk kun je niet kleuren, je kunt wel een frameless venster maken (kon ooit iig, was een bug en is er mischien uit) en dan bovenin dat venster je eigen kleurtje verzinnen.

[ Voor 8% gewijzigd door Verwijderd op 05-12-2002 16:34 . Reden: lezen ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 11:04

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 05 december 2002 @ 16:27:
Is het mogelijk om de titel van een webpage in m'n C#-codebehind aan te passen?
Zet er een placeholder tussen, deze kan je wel aanpassen.
Ander probleempje:
Alles (zelfs scrollbars) is nu zo'n beetje aan te passen met een stylesheet (CSS), maar de kleur van de titelbalk is nog wel afhankelijk van de Windowskleuren van de client. Of vergis ik me? (Ik hoop 't! :))
Titelbalk is niet aanpasbaar.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Zet er een placeholder tussen, deze kan je wel aanpassen.
Een placeholder is alleen binnen de body te gebruiken en de title moet toch in de head? :)
Titelbalk is niet aanpasbaar.
Da's jammer. :'(

We gebruiken de web-applicatie sowieso full-screen (F11-mode), maar (modal) dialog popups hebben dan nog een vage kleur die niet bij de rest van de applicatie past.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 11:04

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 05 december 2002 @ 16:43:
[...]

Een placeholder is alleen binnen de body te gebruiken en de title moet toch in de head? :)
* gorgi_19 duikt z'n eigen code in en bij hem werkt het toch echt.. :P Je kan alleen niet ALLE controls buiten <form runat=server></form> plaatsen; placeholder / eigen controls moet wel kunnen.. :)
[...]

Da's jammer. :'(

We gebruiken de web-applicatie sowieso full-screen (F11-mode), maar (modal) dialog popups hebben dan nog een vage kleur die niet bij de rest van de applicatie past.
Ranzige methode: Vergroot je scherm zo erg met javascript (resize, move/ whatever) dat je titelbalk buiten het zichtbare gedeelte valt over over de titelbalk heen schuift. Is alleen iets voor de bovenburen.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Je kan de Render method overriden en daarin de TITLE aanpassen. Ook niet erg netjes maar het werkt zeker.

Met dit stukje code prak ik een stylesheet tag (SS1 of SS2) in de HEAD afhankelijk van een global var, m_IsServicePage.
Kan je ook iets met de title tag mee doen.

Hangt ook de rendertijd van je page in een html comment onderaan de pagina.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
protected override void Render(HtmlTextWriter output)
{
    StringWriter sw;
    HtmlTextWriter htmltw;
    sw = new StringWriter();
    htmltw = new HtmlTextWriter(sw);
    base.Render(htmltw);
    StringBuilder temp = sw.GetStringBuilder();
    
    string styleString;
    if (m_IsServicePage) 
    {
        styleString = SS1;
    } 
    else
    {
        styleString = SS2;
    }
    output.Write(temp.ToString().Replace("</HEAD>",styleString + "</HEAD>"));

    //write render time and page size
    output.Write(String.Format("<!-- rendered {0} bytes in {1} -->", temp.Length.ToString(), (DateTime.Now-pageLoadStartTime).ToString()));
}

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 00:27

mulder

ik spuug op het trottoir

als je bv
code:
1
<title><%# PageTitle %></title>

en in de codebehind
code:
1
2
3
4
5
6
7
public string PageTitle
{
    get
    {
    return "Yadda yadda";
    }
}

Werkt bij mij prima.

oogjes open, snaveltjes dicht


  • tijn
  • Registratie: Februari 2000
  • Laatst online: 31-07 00:06
Wat een ranzigheid allemaal hierboven ;)

code:
1
2
3
4
5
6
7
<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>
<html>
  <head>
    <title id="PageTitle" runat="server"></title>
    <link id="CssStyleSheet" rel="stylesheet" type="text/css" runat="server" />
  </head>
  ...

en dan in de codebehind:
code:
1
2
3
4
5
6
7
8
protected HtmlGenericControl PageTitle;
protected HtmlGenericControl CssStyleSheet;

private void Page_Load(object sender, System.EventArgs e)
{
  this.PageTitle.InnerText = "De titel"
  this.CssStyleSheet.Attributes.Add("href", "~/css/style.css");
}

Een probleempje: VS.NET vindt het maar nix. Als je van html naar design switcht en dan weer terug verbouwt hij je tags (en ja, dat doettie ook als je alle autoformatting meuk uitzet).

[ Voor 14% gewijzigd door tijn op 05-12-2002 20:18 ]

Cuyahoga .NET website framework


Verwijderd

Ook heel handig ;)

Ik override render omdat ik mijn eigen child class van de Page class heb gemaakt met wat standaardfunctionaliteit. Zorgen dat iedereen de juiste CSS gebruikt is een beetje een bijproductje. Wel handig dat je er nooit naar hoeft om te kijken.
Daarom vind ik die van Don Facundo niet zo joepie.. moet je voor elke pagina de aspx-html veranderen (of je template natuurlijk maar dat heeft ook zijn nadelen).

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 00:27

mulder

ik spuug op het trottoir

Verwijderd schreef op 05 december 2002 @ 21:32:
Ook heel handig ;)

Ik override render omdat ik mijn eigen child class van de Page class heb gemaakt met wat standaardfunctionaliteit. Zorgen dat iedereen de juiste CSS gebruikt is een beetje een bijproductje. Wel handig dat je er nooit naar hoeft om te kijken.
Daarom vind ik die van Don Facundo niet zo joepie.. moet je voor elke pagina de aspx-html veranderen (of je template natuurlijk maar dat heeft ook zijn nadelen).
Emmm, dat moet voor die andere methode ook? Je maakt alleen van een HTML element een .NET Control, je vertroebelt alleen de scheiding tussen je client-side HTML en je server-side code. Wat ik heb gedaan is een property PageTitle aan de class 'WebForm1' (bv) toevoegen. Dit is meer de .NET gedachte dacht ik zo. (8>

oogjes open, snaveltjes dicht


  • tijn
  • Registratie: Februari 2000
  • Laatst online: 31-07 00:06
Verwijderd schreef op 05 December 2002 @ 21:32:
Ik override render omdat ik mijn eigen child class van de Page class heb gemaakt met wat standaardfunctionaliteit.
Leuk! Het stukje code dat ik postte komt eigenlijk uit een usercontrol (geen aspx pagina dus) die ik weer gebruik voor een soort van template constructie. Deze wordt ingeladen door een base class waar alle aspx pagina's van overerven. De base class verplaatst alle controls die op de aspx pagina zitten naar een placeholder binnen de usercontrol. De usercontrol speelt op die manier eigenlijk voor template. De Title en Css worden daarin niet in het page_load event van de control gevuld, maar via properties in het page_load event van de aspx pagina.
Belachelijk flexibel. Je kunt je template usercontrol naar believen volhangen met andere controls (header, menu) of runtime een andere usercontrol als template gebruiken, zolang deze maar een bepaalde interface implementeert.

Cuyahoga .NET website framework


Verwijderd

Topicstarter
Don Facundo schreef op 05 December 2002 @ 21:41:
Dit is meer de .NET gedachte dacht ik zo. (8>
Ja, ik vind jou oplossing idd de mooiste en die gebruik ik dan ook _/-\o_
Maar iedereen die meeged8 heeft: toch ook bedankt! :)
Pagina: 1