2011-01-19 6 views
9

ho una chiave nel web.config come -ASP.NET condizionale Markup rendering Secondo web.config chiave

<add key="IsDemo" value ="true"/> 

voglio mostrare/nascondere la marcatura sulla base sopra l'ingresso web.config per un non -server html tag senza utilizzare il codice dietro il file (poiché non esiste alcun file .cs e non ci sono i comandi runat = server). Qualcosa di simile a seguente codice pseudo:

IF (IsDemo == "true") 
THEN 
<tr> 
    <td id="tdDemoSection" colspan="2" align="left" valign="top"> 
     <.....> 
    </td> 
</tr> 
ENDIF 

Qualcuno sa che possiamo scrivere come logica condizionale nel markup aspx? Per favore aiuto !!!

EDIT:

Sezione Mi sto nascondendo o mostrando avere alcuni dati come username e password. Quindi, non voglio che l'utente usi Firebug o gli Strumenti per sviluppatori Web per vedere il markup nascosto. markup non dovrebbe andare al lato client.

risposta

22

La sintassi per una cosa del genere sarebbe

<% if(System.Configuration.ConfigurationManager.AppSettings["IsDemo"] == "true") %> 
<% { %> 
<!-- Protected HTML goes here --> 
<% } %> 

Ciò presuppone che la pagina sia in C#.

È possibile aumentare questo codice aumentando la difensività attorno al recupero di AppSettings, ad es. cosa succede nel caso in cui il valore è nullo ecc

+0

Grazie. Ho apportato poche modifiche al codice e aggiunto lo snippet sotto il quale ha funzionato per me. –

2

Se ho capito bene, non si vuole usare il lato server (componenti aspx, con l'attributo runat = "server") e voglio solo controllare la visualizzazione di html sulla pagina aspx, quindi provare questa soluzione.

Creare una proprietà in un file codebehind (o, meglio ancora, in qualche altra classe config helper):

//IN C# (OR VB) file 
protected string Demo{ 
    get{ 
      return ConfigurationManager.AppSettings["IsDemo"]=="true"? 
        "none":"block"; 
     } 
} 

In pagina aspx:

<tr style="display:<%= Demo%>;"> 
    <td>blah blah</td> 
</tr> 
+0

Sezione Mi sto nascondendo o mostrando avere alcuni dati come username e password. Quindi, non voglio che l'utente usi Firebug o gli Strumenti per sviluppatori Web per vedere il markup nascosto. markup non dovrebbe andare al lato client. –

+1

Perché diavolo stai mettendo nome utente e password a pagina? – TheVillageIdiot

+0

Sì. La tua domanda è valida. :) Ho fatto la stessa domanda al mio cliente. In realtà, non è una password, ma è un codice di accesso condiviso da più utenti. –

5

Soluzione: -

<% If (ConfigurationManager.AppSettings("IsDemo").ToLower().Equals("true")) Then%> 
    <tr> 
     <.....> 
    </tr> 
<% Else%> 
    <tr> 
     <.....> 
    </tr> 
<% End If%> 
+0

La domanda è contrassegnata con C#, sembra VB.NET. – Neolisk