asp.net - ASP.NET 中的事件链接样式

标签 asp.net javascript jquery css

我在使用 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/

相关文章:

javascript - 大量 ScriptResource.axd - 这是由 ASP.NET AJAX 引起的吗?

java - 框架/平台选择?

asp.net - 如果标签宽度超过 Div 标签的限制,则在下一行显示复选框标签

javascript - 从 Spine.js 模型实例获取模型名称

javascript - 为什么在使用箭头键时更改功能对我的范围 slider 不起作用?

javascript - 单击时禁用值下拉列表

c# - 当多个用户登录时,一段时间后 ASP.Net C# 应用程序变慢

javascript - 如何让 slider 长度变短并出现在页面中央?

javascript - Jquery Closest无法捕获表单数据单独返回未定义

javascript - 从 URL 问题获取模型