1

我正在尝试将 CssClass 放入导航菜单的链接按钮。这是因为当我单击链接按钮时,它会将其类设置为活动。在这里,我在创建控件时遇到错误。

<div class="navigation">
<ul>
<li class="homenavBt">
<asp:LinkButton ID="LinkHome" runat="server" <% If Session("Page")="Home" Then %> CssClass="active" <% End If %> >Home</asp:LinkButton></li>
<li class="newsBt">
<asp:LinkButton ID="LinkNews" runat="server"  <% If Session("Page")="News" Then %> CssClass="active" <% End If %> >News</asp:LinkButton></li>
<li class="sportsbt">
<asp:LinkButton ID="LinkSports" runat="server"  <% If Session("Page")="Sports" Then %> CssClass="active" <% End If %> >Sports</asp:LinkButton></li>
<li class="glamournavBt">
<asp:LinkButton ID="LinkArticle" runat="server"  <% If Session("Page")="Article" Then %> CssClass="active" <% End If %> >Article</asp:LinkButton></li>
<li class="technav_bt">
<asp:LinkButton ID="LinkGallery" runat="server"  <% If Session("Page")="Gallery" Then %> CssClass="active" <% End If %>>Gallery</asp:LinkButton></li>
</ul>
</div>

当我单击链接按钮时,我需要为各个页面设置会话,如下所示。

Protected Sub LinkNews_Click(sender As Object, e As EventArgs) Handles LinkNews.Click
        Session("Page")="News"
End Sub

如果有什么不明白的请评论 谢谢!!

4

1 回答 1

0

您遇到此问题的原因是您无法将内联代码放入具有 runat="server" 的控件中,除非您使用数据绑定语法:<%# ...%>,并调用 DataBind()从你的代码。

好吧,使用后面的代码(在 C# 中),您可以这样做:

protected void Page_Load(object sender, EventArgs e)
{
    CheckPage();
}

private void CheckPage()
{
    if (Session["Page"] as string == "News")
        LinkNews.CssClass = "active";
    else
        LinkNews.CssClass = String.Empty;
}

protected void LinkNews_Click(object sender, EventArgs e)
{
    Session["Page"] = "News";
    CheckPage();
}

...在这种情况下,您不会在标记中指定 CSS 类:

<div class="navigation">
<ul>
<li class="homenavBt">
<asp:LinkButton ID="LinkHome" runat="server">Home</asp:LinkButton></li>
<li class="newsBt">
<asp:LinkButton ID="LinkNews" runat="server">News</asp:LinkButton></li>
<li class="sportsbt">
<asp:LinkButton ID="LinkSports" runat="server">Sports</asp:LinkButton></li>
<li class="glamournavBt">
<asp:LinkButton ID="LinkArticle" runat="server">Article</asp:LinkButton></li>
<li class="technav_bt">
<asp:LinkButton ID="LinkGallery" runat="server">Gallery</asp:LinkButton></li>
</ul>
</div>

如果您想使用绑定技术,它可能看起来像这样(同样是 C#):

<asp:LinkButton ID="LinkNews" runat="server" CssClass='<%# Session["Page"] as string == "News" ? "active" : "" %>'>News</asp:LinkButton>

...并且您必须从代码中调用 DataBind() 而不是 CheckPage() (在我之前的示例中)。

于 2012-12-02T20:36:57.933 回答