2011-09-02 12 views

Trả lời

1

Cách thông thường là sử dụng một số javascript để đặt vị trí cuộn hiện tại thành trường ẩn, sau đó khôi phục vị trí đó trên tải trang (thường là trong sự kiện sẵn sàng jquery).

Tuy nhiên, đó thực sự chỉ là một tác dụng phụ. Bạn nên làm một số loại lệnh ajax để cập nhật lưới thay vì gửi lại, sau đó không cần cuộn.

+1

Giải pháp này là tuyệt vời nhưng tôi đã tự hỏi nếu tôi có thể tìm thấy một cái gì đó tốt hơn và dễ dàng hơn, như tài sản MaintainScrollPositionOnPostback = true trong ASP.NET Web Forms. Tôi đang sử dụng lưới MVC Contrib với bộ lọc tìm kiếm và phân loại vì vậy tôi mong đợi một giải pháp tích hợp nhưng tôi không thể tìm thấy nó ... – Mast3r

+1

Tôi đồng ý với Mast3r. Không có gì nói rằng chúng ta "phải" sử dụng Ajax. Tôi tìm thấy bằng cách sử dụng viewmodels trong mvc 4 với postback nhanh hơn rất nhiều để phát triển và dễ dàng hơn để duy trì. Nếu bộ nhớ đệm của trình duyệt được bật, bạn thậm chí không thấy trang flick! giải pháp tại http://stackoverflow.com/a/2618726/706363 – ppumkin

0

Sử dụng jQuery và cookie bên ứng dụng khách.

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

Hy vọng mã này.

+0

Điều đó có nghĩa là trình duyệt sẽ cuộn ngay cả khi bạn chuyển sang một trang khác. Tôi nghĩ tốt hơn nên sử dụng đầu vào bị ẩn, vì nó sẽ chỉ ở trên trang hiện tại. –

0

Một giải pháp hữu ích được đăng ở đây: 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); 
     }) 
    }); 

Đây là một chủ đề rất cũ nhưng tôi đã đăng tải này cho nhà phát triển những người sẽ được tìm kiếm loại vấn đề này, có thể giúp đỡ.