asp.net中的条件渲染

时间:2009-03-24 15:22:57

标签: asp.net

我怎样才能在asp.net中使用这样的东西

<asp:Panel Visible="<%(SType==switch_type.Trunk).ToString()%>" runat="server">Tickle</asp:Panel>

其中switch_type是值的枚举,而SType是代码隐藏中的get / set。

我有这个工作,但我觉得它很难看

<% if (SType == switch_type.Trunk)
    { %>
        ...

我知道我可以在代码隐藏中将面板设置为可见/不可见,但是会有很多面板,而且在aspx文件中设置可见性似乎更容易。

4 个答案:

答案 0 :(得分:2)

看哪,事件的力量!

ASPX方面:

<asp:panel runat="server" id="myPnlName OnLoad="panelLoadEvent" Tooltip='<% Response.Write(switch_type.Trunk) %>'>
    Stuff
</asp:panel>

代码方:

protected sub panelLoadEvent(sender as object, e as EventArgs)
  dim pnl as Panel = sender 
  dim oItem as switch_type = ctype(pnl.ToolTip, switch_type) 
  pnl.visibile = iif(stype=oItem,true,false)
End sub 

重点是您要将要检查的VALUE放入面板的工具提示中,并且每个面板都由Panel aspx声明的OnLoad属性中定义的相同LoadEvent处理程序处理。 此时,您检查给定值是否与您的变量匹配,并相应地设置可见性。

编辑如果要在工具提示中存储字符串表示而不是枚举的基础int,可以使用以下内容将其解析回枚举:

[Enum].Parse(System.Type, Value)

答案 1 :(得分:0)

这个怎么样

<asp:Panel runat="server" Visible="<%= SType == switch_type.Trunk %>">
    Stuff
</asp:Panel>

答案 2 :(得分:0)

由于有很多面板值得创建一个可以从Repeater绑定的数据集,然后您就可以使用&lt;%#%&gt;用于执行可见隐形逻辑的语法?

答案 3 :(得分:-1)

您可以使用MultiView控件,并将每个面板放在其中一个视图中。