我怎样才能在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文件中设置可见性似乎更容易。
答案 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控件,并将每个面板放在其中一个视图中。