Управление прокруткой страницы при возврате представления на сайте ASP.NET MVC - PullRequest
1 голос
/ 14 июля 2010

Я создаю сайт ASP.NET MVC, где я хочу, чтобы одно из представлений, которые я возвращаю, автоматически прокручивалось до определенной точки.

Часть сайта, на которой я хочу, чтобы это происходило, работает как форум - есть «темы», которые содержат «сообщения». Пользователь может либо просмотреть всю постраничную ветку, либо перейти к конкретному сообщению, используя его идентификатор. Когда пользователь просматривает конкретное сообщение, я хочу показать обычный интерфейс темы, затем перейти к странице, на которой находится сообщение, и прокрутить вниз до сообщения.

Можно ли каким-то образом автоматически прокрутить вниз до определенной точки при возврате представления из действия на сайте ASP.NET MVC? Если это так, как мне это сделать?

ПРИМЕЧАНИЕ. Одно из решений этой проблемы, которое я нашел, заключается в том, как Stack Overflow и другие сайты Stack Exchange делают это: на каждый ответ на вопрос можно связать, добавив #ID к URL. Если невозможно автоматически прокрутить вниз при возврате представления, я бы реализовал это вместо этого, но я не понимаю, как использовать такой подход, когда имеется несколько страниц, а рассматриваемое сообщение отсутствует на текущей странице.


UPDATE:

Основываясь на ответе Криса , в настоящее время я планирую реализовать его с URL-адресом, похожим на этот: example.com/forum/[ForumID]/thread/[ThreadID]/post/[PostID]#[PostID]. В своем действии я выясняю, на какой странице ветки находится сообщение, а затем возвращаю все сообщения с этой страницы в представление.

Однако я заметил нечто особенное в том, как Stack Overflow решает эту проблему. Попробуйте: https://meta.stackexchange.com/questions/57170 - в конечном итоге вы отправите https://meta.stackexchange.com/questions/57155/gravatar-bugs-and-improvements-in-chat/57170#57170.

Как реализовано вышеизложенное? Это точно , что я хочу достичь .

1 Ответ

2 голосов
/ 14 июля 2010

Вы можете использовать javascript в своем представлении для автоматической прокрутки с помощью чего-то вроде плагина jQuery ScrollTo (http://plugins.jquery.com/project/ScrollTo). Прикрепите его к событию загрузки страницы и выберите целевой пост.

Однако,самый простой способ (и совместимый с большинством браузеров) был бы похож на то, как это делает StackOverflow с #ID в URL.

...