2011-09-02 76 views

回答

1

通常的方法是使用一些JavaScript將當前滾動位置設置爲隱藏字段,然後在頁面加載時恢復該位置(通常在jQuery就緒事件中)。

但是,這只是一個副作用。你應該做一些ajax命令來更新網格而不是回發,然後不需要滾動。

+1

這個解決方案很好,但我想知道是否可以找到更好更容易的東西,比如ASP.NET Web窗體中的屬性MaintainScrollPositionOnPostback = true。我使用的搜索過濾器和排序MVC Contrib網格,所以我期望內置的解決方案,但我找不到它... – Mast3r

+1

是的,我同意Mast3r。沒有說我們「必須」使用Ajax。我發現在mvc 4中使用視圖模型的回發速度要快得多,開發起來也更容易。如果啓用瀏覽器緩存,您甚至不會看到頁面輕彈!解決方案http://stackoverflow.com/a/2618726/706363 – ppumkin

0

使用jQuery和客戶端cookie。

$(function(){ 
    var posName = location.href + "_top"; 
    $(window).unload(function() { 
    var top = $(document).scrollTop(); 
    $.cookie(posName, top); 
    }); 

    var goTop = parseInt($.cookie(posName)); 
    if (goTop) { 
    $(document).scrollTop(goTop); 
    $.cookie(posName, ""); 
    } 
}); 

希望這段代碼。

+0

這意味着即使您移動到不同的頁面,瀏覽器也會滾動。我認爲最好使用隱藏的輸入,因爲它只會保留在當前頁面上。 –

0

一個有用的解決方案張貼在這裏:http://www.experts-exchange.com/Hardware/Servers/Q_28082177.html

$(function(){ 

     var top = parseInt($.cookie("top")); 
     if(top) $(document).scrollTop(top); 
     $(document).scroll(function() { 
      var top = $(document).scrollTop(); 
      $.cookie("top", top); 
     }) 
    }); 

這是一個非常古老的線程,但我已經發布本作開發誰將會尋找這種問題,可能會有幫助。