我在使用 ASP.NET 网站上的主菜单时遇到一些问题。我想要的是,当用户点击一个链接时,它应该将颜色更改为黑色并保持黑色,直到用户点击其他链接。
换句话说:我想突出显示选定的链接。
到目前为止,我已经使用一些变通的 JavaScript 使其工作(我认为应该考虑使用 jQuery),但问题是,样式不会保留在页面回发中(或者看起来......)
我当前的 javascript:
<script type="text/javascript">
var last = "none";
function LinkSelector(link) {
if (last != "none") {
document.getElementById(last).className = "NormalLink";
}
document.getElementById(link).className = "ActiveLink";
last = link;
}
</script>
正如我所写,它确实会在单击时更改类名称,但在加载新页面时不会保持这种状态。
有人对此有解决方法吗? :)
提前致谢。
祝一切顺利
博
最佳答案
通常,我会使用 ASP:Menu 控件。它提供了对其中菜单项的适当控制。
例如,这是我转储到母版页中并在初始页面点击期间运行的通用方法。该方法遍历菜单控件中的菜单项,并选择与当前 URL 对应的菜单项。
protected void Page_Load(object sender, EventArgs e) {
if (!Page.IsPostBack) {
SelectMenuItem();
}
}
private void SelectMenuItem() {
string rawurl = Request.RawUrl.ToLower();
rawurl = rawurl.Substring(rawurl.LastIndexOf("/") + 1);
if (rawurl.IndexOf("?") >= 0)
rawurl = rawurl.Substring(0, rawurl.IndexOf("?"));
foreach (MenuItem mi in mnuMain.Items) {
if (mi.ChildItems.Count == 0) {
if (mi.Value == rawurl) {
mi.Selected = true;
break;
}
}
else {
foreach (MenuItem cmi in mi.ChildItems) {
if (cmi.Value == rawurl) {
mi.Selected = true;
break;
}
}
if (mi.Selected)
break;
}
}
}
下面是我的 asp 菜单控件中的一些菜单项。请注意,我使用 Value 属性来帮助我指示哪个菜单项与上述方法中请求的 URL 相关。
<Items>
<asp:MenuItem Text="Forms" Value="authorization">
<asp:MenuItem Text="New Authorization Form" Value="createauthform.aspx" NavigateUrl="~/CreateAuthForm.aspx"></asp:MenuItem>
<asp:MenuItem Text="Manage My Authorization Forms" Value="myrequests.aspx" NavigateUrl="~/MyRequests.aspx"></asp:MenuItem>
<asp:MenuItem Text="Audit Attendance Form" Value="auditform.aspx" NavigateUrl="~/AuditForm.aspx"></asp:MenuItem>
<asp:MenuItem Text="Tax Determination Statement" Value="taxstatement.aspx" NavigateUrl="~/TaxStatement.aspx"></asp:MenuItem>
</asp:MenuItem>
</Items>
关于asp.net - ASP.NET 中的事件链接样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2106091/