如何在ASP.NET MVC中禁用当前页面链接?

时间:2010-03-13 19:20:56

标签: asp.net-mvc user-interface

我正在调查ASP.NET MVC,并注意到在默认情况下由Visual Studio创建的ASP.NET MVC应用程序中,当用户在“Home”时,链接“Home”和“About”保持活动状态和“关于”页面相对应,并在点击当前页面链接页面后重新加载。

禁用指向页面的链接的正确方法是什么,用户已经开启?

如何在不违反ASP.NET MVC方法的情况下做到这一点?

3 个答案:

答案 0 :(得分:3)

根据html“禁用”只是删除href标记。这里不能有任何asp-net-mvc-magic。你需要以一种将href设置为“”为当前页面的方式呈现你的菜单。

有关详细信息,我建议您参考“Pro ASP.NET MVC Framework”一书,第5章。

答案 1 :(得分:2)

我倾向于认为您应该允许链接保持活动状态,即使在所选页面上也是如此。这样您就可以让用户明确地刷新他们想要的数据视图。应突出显示该链接以指示这是当前选定的页面。

否则,如果您不希望用户刷新页面,则应完全删除链接(或<li />或其他),以便在应用程序的上下文中刷新页面的概念不会存在,而不是通过禁用的链接指示当前选择的页面,使用显式标题。​​

要获得此结果,您可以使用以下内容:

$("#menu").find('*[href]').each(function(index) {
    if ($(this).attr("href") == window.location.pathname) {
        $(this).parents("li").html("");
    }
});

如果您需要保持元素可见,只需删除href:

$("#menu").find('*[href]').each(function(index) {
    if ($(this).attr("href") == window.location.pathname) {
        $(this).removeAttr("href");
    }
});

但我也会修改样式,因此它看起来不像是一个断开的链接或其他东西。

答案 2 :(得分:1)

这是我认为javascript适合账单的情况之一。对于禁用了javascript的小部分用户,链接只是活动的 - 没什么大不了的,但是对于大多数用户来说,每个页面上的一行简单的javascript可以通过分配一个只返回的onclick处理程序来禁用相应的链接假的。

示例:

<script type="text/javascript">
    $('#HomeLink').click(function(e) {
        e.preventDefault();
        return false;
    });
</script>

无论如何,IMO应该在视图中维护UI元素的控制。