2013-10-06 54 views
0

我是新來的asp.net MVC4。點擊當前頁面時防止刷新

我在我的網站上實現了一個導航欄。

我想在點擊導航欄中的當前頁面時阻止刷新。

UPDATE 我使用導航欄剃刀:

<ul> 

@Html.ActionLink("FEATURE_1_URL","FEATURE_1_URL","Home") 
@Html.ActionLink("FEATURE_2_URL","FEATURE_2_URL","Home") 
@Html.ActionLink("FEATURE_4_URL","FEATURE_4_URL","Home") 
</ul> 

我怎樣才能做到呢?

+0

請向我們顯示您的代碼。 –

+0

這是一個普遍的問題,我需要實現這個功能: 如果你有家庭和關於導航,你點擊家庭,你會得到主頁,但下次你點擊它,你是我不'不希望它向服務器發送另一個請求。 你知道我在哪裏可以找到這樣的教程? –

+0

爲了正確理解,如果您在主頁上(例如)並單擊主頁鏈接,則不希望頁面刷新,對吧?如果是這樣,你有幾個選擇。有人可能會將該Html.Link封裝在'if'語句中,並在同一頁面上呈現標籤而不是鏈接。另一個是動態地添加一個「#」作爲URL而不是真正的URL。我不知道「內置」方式來做到這一點,但您需要推出自己的方法。 –

回答

1

在給出的解決方案頁面將被刷新,但會降低服務器的呼叫,並不會一次又一次地呼籲採取行動。

在MVC4一個最好的方式,您可以通過使用緩存

[OutputCache(Duration=30)] 
public ActionResult FEATURE_1_URL(){} 

所以通過指定的時間將你的結果存儲在緩存,所以當你點擊下一次達到這個目的,ActionLink的,它會給你造成根據持續時間緩存數據,這將減少對服務器的請求。

這至少可以快速響應

+0

我不認爲這是最好的解決方案,因爲它冗餘地進行服務器調用。這個解決方案應該在客戶端而不是服務器端進行處理。我在解決方案上發表了我的觀點。 – eaglei22

1

使用jQuery

$('.btnCurrent').on('click', function(e){ 
    //Determine page using hidden field or something like that 
    if(page == currentPage){ 
     e.preventDefault(); 
    } 
}); 
+0

我更新了我的問題,我正在使用Razor –

+1

爲你的actionlink添加一個類,新增{@class =「btnCurrent」}然後你可以使用這個jquery –

+0

是的,這是一個很好的建議......基本上當你點擊任何菜單項並重新加載頁面,向相應的菜單項添加一個類。並在菜單導航點擊檢查,如果是這樣的類,如果這樣忽略。 – PSL

0

基本上是有用的,我所做的就是創建一個@helper建立我的菜單項,你只需要傳遞給你的模型是什麼菜單項是目前活躍在某種方式並在構建該項目時,將href設置爲#。這也可以通過javascript/jquery完成。

這裏是我的@helper方法:

@helper MenuItemDesigner(string MenuItemName, bool hasAccess, string view, string controller, string areaName, MenuItems.Name menuItem, string  glyphicon, string badge) 
{ 
if (hasAccess) 
{ 
    <a 
    @if (Model.ActiveMenuItem == menuItem) 
    { 
     <text>id = "@menuItem" href="#"</text> 
     @Html.Raw("class= 'list-group-item active'"); 
    } 
    else 
    { 
     <text>id = "@menuItem" href="@Url.Action(view, controller, new { Area = areaName })"</text> 
     @Html.Raw("class= 'list-group-item'"); 
    } 
    ><span class="@glyphicon"></span> @MenuItemName <span class="badge" data-val="0" style="display:none">@badge</span> 
    </a> 
} 
} 

顯然,並非所有的這些都將適用於所有情況,但是這可以作爲一個參考。重要的部分是知道當前活動的菜單項並設置它的href =「#」,但是您需要這樣做。