我正在调查ASP.NET MVC,并注意到在默认情况下由Visual Studio创建的ASP.NET MVC应用程序中,当用户在“Home”时,链接“Home”和“About”保持活动状态和“关于”页面相对应,并在点击当前页面链接页面后重新加载。
禁用指向页面的链接的正确方法是什么,用户已经开启?
如何在不违反ASP.NET MVC方法的情况下做到这一点?
答案 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元素的控制。