2010-07-14 23 views
1

我正在構建一個ASP.NET MVC網站,我希望其中一個視圖返回時自動滾動到某個點。在ASP.NET MVC網站中返回視圖時操作頁面滾動

我希望這種情況發生的網站部分有點像論壇 - 有「帖子」的「線索」。用戶可以瀏覽整個分頁線索,也可以使用其ID來瀏覽特定帖子。當用戶瀏覽特定帖子時,我想要顯示常規的帖子界面,然後瀏覽到該帖子所在的頁面並向下滾動到帖子。

當從ASP.NET MVC網站的操作返回視圖時,是否可以以某種方式自動向下滾動到某個點?如果是這樣,我該怎麼做?

注意:我找到的這個問題的一個解決方案是Stack Overflow和其他Stack Exchange站點如何執行此操作:通過在URL中添加#ID可以鏈接到每個問題的答案。如果在返回視圖時不可能自動向下滾動,我會實現這一點,但我不明白如何在有多個頁面時使用這種方法,並且所討論的帖子不在當前頁面上。


UPDATE:

基於Chris' answer,我目前正在規劃的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

以上是如何實施的?這是究竟是我想完成什麼

回答

2

您可以在您的視圖中使用JavaScript實現自動滾動,像jQuery ScrollTo插件(http://plugins.jquery.com/project/ScrollTo)。將它附加到您的頁面加載事件並定位您想要的文章。

但是,最簡單的方式(和大多數跨瀏覽器兼容)就像StackOverflow一樣,在URL中使用#ID。

+0

@Chris:關於'#ID'的方式:如何讓它跨頁面工作?畢竟,我一次只能載入一頁,對吧? – 2010-07-14 05:55:34

+0

使鏈接到帖子的完整鏈接。所以,而不是你的href(例如)只是#ID,使用http://example.com/forum/2/thread/100/Page/2/#ID – Chris 2010-07-14 07:49:06

+0

除非我找到另一種解決方案,我會實現它像'example.com/forum/[ForumID]/thread/[ThreadID]/post/[PostID]#[PostID]'。這是因爲在鏈接中對頁碼進行硬編碼並不是很好,因爲頁碼可能會改變(在我的系統中)。我想我會先閱讀PostID,返回該Post的頁面,然後'#'將激活。 – 2010-07-14 16:16:22

相關問題