ASP.NET条件标记渲染根据Web.config键

时间:2011-01-19 11:39:41

标签: c# javascript asp.net markup

我在web.config中有一个键 -

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

我想基于以上web.config条目显示/隐藏标记非服务器html标记而不使用代码隐藏文件(因为没有.cs文件且没有runat =服务器控件)。 类似于以下伪代码的东西:

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

有谁知道我们可以在.aspx标记中编写这样的条件逻辑吗? 请帮忙!!!

修改

我隐藏或显示的部分有一些数据,如用户名和密码。所以,我不希望用户使用Firebug或Web Developer Tools来查看隐藏的标记。标记不应该转到客户端。

3 个答案:

答案 0 :(得分:23)

类似的东西的语法是

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

这假设页面在C#中。

您可以通过更加防御AppSettings检索来确定此代码,例如在值为null等情况下会发生什么。

答案 1 :(得分:5)

<强>解决方案: -

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

答案 2 :(得分:2)

如果我理解正确,你不想使用服务器端(aspx组件,具有runat =“server”属性)并且只想控制aspx页面上的html显示然后尝试这个解决方案。

在codebehind文件中创建一个属性(或者更好的是在其他一些配置助手类中):

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

在aspx页面中:

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