Parag Meshram
Parag Meshram

Reputation: 8521

ASP.NET Conditional Markup Rendering According to Web.config Key

I have a key in web.config as -

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

I want to show/hide markup based on above web.config entry for a non-server html tag without using code behind file (as there is no .cs file and there are no runat=server controls). Something similar to following pseudo code:

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

Does anyone know that we can write such conditional logic in .aspx markup? Please help!!!

EDIT:

Section I'm hiding or showing have some data like username and password. So, I do not want user to use Firebug or Web Developer Tools to see hidden markup. markup should not go to client side.

Upvotes: 11

Views: 16029

Answers (3)

Tomas McGuinness
Tomas McGuinness

Reputation: 7691

The syntax for something like that would be

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

This assumes that the page is in C#.

You can firm this code up by being more defensive around the AppSettings retrieval e.g. what happens in the case where the value is null etc.

Upvotes: 24

Parag Meshram
Parag Meshram

Reputation: 8521

Solution:-

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

Upvotes: 6

TheVillageIdiot
TheVillageIdiot

Reputation: 40507

If I understand it right, you don't want to use server-side (aspx components, with runat="server" attribute) and just want to control display of html on aspx page then try this solution.

Create a property in codebehind file (or better still in some other config helper class):

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

In aspx page:

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

Upvotes: 2

Related Questions