我正在尝试将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
如果没有清除某些内容,请发表评论 谢谢!
答案 0 :(得分:0)
您遇到此问题的原因是您无法使用runat =“server”将内嵌代码放入控件中,除非您使用数据绑定语法:&lt;%#...%&gt;,并从您的代码中调用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()(在我之前的例子中)。