Come modificare lo stile CSS di un div usando C # in .NET

Sto cercando di prendere l’ID di un div nel codice dietro (C #) e impostare alcuni css su di esso. Posso prenderlo dal DOM o devo usare un qualche tipo di controllo?

 

Aggiungi l’attributo runat="server" ad esso in modo da avere:

 

Saving...

In questo modo puoi accedere all’attributo della class usando:

 formSpinner.Attributes["class"] = "classOfYourChoice"; 

Vale anche la pena ricordare che l’ asp:Panel controllo del asp:Panel è praticamente sinonimi (almeno per quanto riguarda il markup renderizzato) con div , quindi puoi anche fare:

   

Saving...

Che ti consente quindi di scrivere:

 formSpinner.CssClass = "classOfYourChoice"; 

Questo ti dà un accesso più definito alla proprietà e ce ne sono altri che potrebbero, o non potrebbero esserti utili.

Assicurati che il tuo div sia impostato su runat = “server”, quindi fai semplicemente riferimento nel code-behind e imposta l’attributo “class”.

 
...content...

Code-behind

 formSpinner.Attributes["class"] = "class-name"; 

Questa domanda mi rende nervoso. Indica che forse non capisci come l’utilizzo del codice lato server influirà sul tuo stato DOM della pagina.

Ogni volta che si esegue il codice lato server, l’intera pagina viene ricostruita da zero. Ciò ha diverse implicazioni:

  • Un modulo viene inviato dal client al server web. Si tratta dell’azione più lenta che un browser Web può intraprendere, in particolare in ASP.Net dove il modulo potrebbe essere riempito con campi aggiuntivi (ad esempio: ViewState). Facendolo troppo spesso per attività banali, la tua app sembrerà essere lenta, anche se tutto il resto è bello e scattante.
  • Aggiunge carico al tuo server, in termini di larghezza di banda (su e giù stream) e CPU / memoria. Tutto ciò che è coinvolto nella ricostruzione della tua pagina dovrà ripetersi. Se ci sono controlli dinamici sulla pagina, non dimenticare di crearli.
  • Qualsiasi cosa tu abbia fatto al DOM da quando l’ultima richiesta è andata persa, a meno che non ti ricordi di farlo di nuovo per questa richiesta. Il DOM della tua pagina viene ripristinato .

Se riesci a farla franca, potresti spingerla su javascript ed evitare il postback. Forse utilizzare una chiamata XmlHttpRequest () per triggersre qualsiasi azione sul lato server necessaria.

Aggiungi l’attributo runat = “server” al tag, quindi puoi fare riferimento al codebehind.

Aggiungi runat all’elemento nel markup

 

Saving...

Quindi puoi accedere agli attributi della class del controllo usando formSpinner.Attributes ("class") Sarà solo una stringa, ma dovresti essere in grado di modificarla.

Come si fa a farlo senza runat = “server”? Ad esempio, se hai un

  

… e prova ad aggiornarlo da un Updatepanel che non verrà mai aggiornato.

Tuttavia, se lo si mantiene come un normale controllo HTML non server, è ansible. Ecco il Jquery per aggiornarlo:

 $("#body1").addClass('modalBackground'); 

Come si fa a fare questo in codebehind?

Se non si desidera rendere il controllo del server runat nel caso in cui sia necessario l’ID o semplicemente non si voglia aggiungerlo al viewstate,

 

nel back-end:

 protected string _css = "modalBackground"; 

Se tutto ciò che si vuole fare è mostrare o hide condizionatamente un

, allora lo si potrebbe dichiarare come (reso in html come tag div) e impostare la proprietà .Visible.

Per espandere il post di Peri e perché potremmo non voler utilizzare viewstate il seguente codice:

style="< %= _myCSS %>"

Protected _myCSS As String = "display: none"
È l’approccio da guardare se si utilizza AJAX, consente di manipolare lo schermo tramite il codice back end di asp.net piuttosto che jquery / jscript.