Как мне сохранить позицию прокрутки в MVC? - PullRequest
25 голосов
/ 27 января 2009

Я работаю над проектом в MVC и с удовольствием узнал об этом. Есть несколько растущих болей, но как только вы их выясните, это не плохо. Одна вещь, которая действительно проста в мире WebForms - это сохранение позиции прокрутки на странице. Все, что вам нужно сделать, это установить для свойства MaintainScrollPositionOnPostback значение true. Тем не менее, в MVC я не использую обратные передачи, так что это не будет работать для меня. Какой стандартный способ справиться с этим?

Редактировать: Ajax приемлем, но мне также было интересно, как бы вы сделали это без AJAX.

Ответы [ 11 ]

0 голосов
/ 27 января 2009

очень нехороший способ сделать это - использовать куки.

Если вы используете ОДНУ страницу в вашем MVC, которая обрабатывает другие страницы, вы можете добавить к ней фрагмент кода, который загружает каждую страницу, которая создает файл cookie (если он не существует) с именем «scrolltop». Есть способы, чтобы javascript автоматически обновлял этот файл cookie, когда пользователь прокручивает вверх или вниз, перехватывая эти события или наблюдая за значением scrollTop.

На новой странице вам просто нужно загрузить сохраненную позицию и сделать прокрутку представления там за 0 миллисекунд (с Mootools или любым Ajax-скриптом это должно быть возможно), и пользователь будет точно там, где он был.

Я не знаю много о asp, поэтому я не знаю, существует ли метод для привязки к текущей y-позиции. Javascript - это быстрый и простой способ. Якоря в HTMl могут быть полезны, если вы привязали каждый элемент и разместили привязку на других страницах.

...