asp.net e css

di Marco Leoncini, in asp.net,

Se avete sviluppato WebControl (e chi non lo ha fatto, sono troppo comodi ), vi sarete trovati almeno una volta con un problema, fornire uno stile di default.
sappiamo tutti che i css possono essere inseriti inline, nel head o in un file separato.
lo sviluppatore del WebControl si trova davanti una serie di difficoltà, di default il tag head non ha l'attriburo runat="server" quindi è impossibile recuperarlo, lato server per inserire lo style o il riferimento al file esterno.
il problema potrebbe essere aggirato obbligando l'utente finale ad'aggiugere l'attributo runat="server" , ma la versione attuale del VS ha l'abituidene di toglierlo.
accettando che l'utente finale inserisca l'attributo, rimane il problema del file esterno, sarebbe cosa buona, distribuirlo come risorsa incorporata , evitanto così di spargere file, ma per recuperare la risorsa sarebbe necessario un httphandler.
unica via facilemente percorribile (per adesso) è iserire lo style inline.

La classe style che mette a disposizione il framework, non è la più completa, ma estenderla è un gioco da ragazzi:

public class MyStyle : Style
{...}

il WebControl crea un istanza delle classe Style nel metodo CreateControlStyle(), eseguiremo l'override per far si che il metodo restituisca un istanza di MyStyle

protected override Style CreateControlStyle()
{
return new MyStyle(this.ViewState);
}

come argomento, al costruttore viene passato un riferimento al VievState, in modo che la classe style possa salvarci le propie informazioni.
a questo punto possiamo dotare la classe di tutte le propietà che riteniamo utili, alla fine la cosa più importante è eseguire l'override del metodo AddAttributesToRender al fine di scricere correttamente nel flusso di output il nostro style.

fine prima puntata :)

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese