2010-03-13 68 views
1

我正在研究ASP.NET MVC,並注意到在默認情況下由Visual Studio創建的ASP.NET MVC應用程序中,當用戶位於「Home」時,鏈接「Home」和「About」處於活動狀態,並且「關於」頁面相應地,點擊當前頁面鏈接頁面後自動重新加載。如何禁用ASP.NET MVC中的當前頁面鏈接?

什麼是正確的方法來禁用鏈接指向頁面,用戶已經打開?

如何做到這一點,而不違反ASP.NET MVC方法?

回答

3

根據html的「禁用」僅僅是刪除href標記。這裏不能有任何asp-net-mvc-magic。您需要以爲當前頁面設置href爲「」的方式呈現菜單。

有關詳細信息,我建議你參考「臨ASP.NET MVC框架」一書中,第5章

+0

感謝您推薦書中非常有用的章節! – rem 2010-03-17 12:45:46

1

這是那些我認爲JavaScript的符合該法案的情況之一。對於JavaScript禁用的小部分用戶來說,這些鏈接只是活躍的 - 沒有什麼大不了的,但對於大多數用戶來說,每個頁面上的一行簡單javascript可以通過分配一個簡單返回的onclick處理程序來禁用相應的鏈接假。

實施例:

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

UI元素的控制應在視圖中保持無論如何,IMO。

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"); 
    } 
}); 

,但我也想修改風格,所以它不只是看起來像一個斷開的鏈接或東西。

相關問題