我正在开发一个小网站,我试图动态设置css标签。直到现在看起来像这样:
<li <% if (%>
<%#Eval("PAGE_LINK").ToString()%>
<%Equals("/Account/OverView")) {%> class="active"
<%} else { } %>>
<a href="<%# Eval("PAGE_LINK") %>"> <asp:Label runat="server" ID="Label1"> <%# Eval("OPTION_NAME") %></asp:Label></a></li>
错误如下所示:“CS1002 :;预期” 它出现在第3行。我用这个陈述花了四个小时。我究竟做错了什么? Visual Studio并没有抱怨错误的语法...
答案 0 :(得分:1)
如果要基于IF语句添加类,最简单的是GridView或Repeater中的三元运算符。
<li class="<%# Eval("PAGE_LINK").ToString() == "/Account/OverView" ? "active" : "" %>">
<a href="<%# Eval("PAGE_LINK") %>"><%# Eval("OPTION_NAME") %></a>
</li>
如果你真的需要那个Label,你最好直接绑定到Text属性。
<li class="<%# Eval("PAGE_LINK").ToString() == "/Account/OverView" ? "active" : "" %>">
<a href="<%# Eval("PAGE_LINK") %>"><%# Eval("OPTION_NAME") %></a>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("OPTION_NAME")%>'></asp:Label>
</li>
您甚至可以使用HyperLink控件。
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("PAGE_LINK") %>'
Text='<%# Eval("OPTION_NAME") %>'></asp:HyperLink>
答案 1 :(得分:0)
终于开始工作了。我仍然不知道它为什么会崩溃,但我决定在代码隐藏中做到这一点。 OnItemDataBound事件起到了作用。现在看起来如下:
<!-- Pills Sub-Menu -->
<div class="container">
<ul id="pilllisthtml" runat="server" class="nav nav-pills nav-justified">
<asp:ListView runat="server" ID="PillList" OnItemDataBound="PillList_ItemDataBound">
<ItemTemplate>
<li id="myLI" runat="server">
<a href="<%# Eval("PAGE_LINK") %>">
<asp:Label runat="server" ID="Label1"> <%# Eval("OPTION_NAME") %></asp:Label></a></li>
</ItemTemplate>
</asp:ListView>
</ul>
</div>
代码隐藏:
protected void PillList_ItemDataBound(object sender, ListViewItemEventArgs e)
{
CustomerPortalDataBase.VwOptions it = (CustomerPortalDataBase.VwOptions)e.Item.DataItem;
HtmlGenericControl bubu = (HtmlGenericControl)e.Item.FindControl("myLI");
if (it.PAGE_LINK == "/Account/OverView")
{
bubu.Attributes["class"] = bubu.Attributes["class"] + " active";
}
}