aspx服务器标记例程不起作用

时间:2018-02-07 15:24:55

标签: c# asp.net webforms

我正在开发一个小网站,我试图动态设置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并没有抱怨错误的语法...

2 个答案:

答案 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";
        }



    }