2010-09-07 34 views
2

我正在嘗試創建一個ajax驅動的庫,其中序列中的每張照片都加載了Ajax.Actionlink帶有Ajax鏈接的ASP.NET MVC更新地址欄

用戶可以通過傳遞參數的操作方法,如得到任何給定的照片:Gallery/Index?photo=100

的問題是,當用戶通過與Ajax.Actionlink的循環播放照片的URL不再是更新(在正常後期支持期間),所以他們無法從地址欄複製粘貼以返回照片。


我的問題是:在ASP.NET MVC中解決這個問題的最好方法是什麼?我想到的一件事是用地址欄更新地址欄,但坦率地說,我不知道這是否是一個好方法。

我可以使用一些關於如何解決這個問題的最佳實踐建議。任何建議將不勝感激,謝謝。

回答

2

如果你真的想更新與每個AJAX更新地址欄有一對夫婦,你可以在這個博客中使用jquery/javascript庫的:http://stephenwalther.com/archive/2010/04/08/jquery-asp-net-and-browser-history

然而,最好的做法解決方案通常是不嘗試和僞造這樣的東西(它只會出錯)。如果您想讓用戶能夠共享或鏈接到照片,請提供一個字段,其中包含可從中複製的url的相應url或永久鏈接。 Google地圖就是一個很好的例子 - 如果你想和其他人分享地圖。

+0

感謝您的回覆,我正在考慮做永久鏈接谷歌地圖的風格,如果我找不到另一種方式。我問的主要原因是因爲Facebook有相當多的ajax功能,但他們的URL仍然通過(看起來)更新哈希標籤來更新。我會看看你鏈接的Jquery工具。 – mrkcsc 2010-09-07 20:17:36

+0

我想我只會做永久鏈接解決方案。燒烤插件 - 正如你所提到的 - 需要付出很大的努力,並且很容易出錯。 – mrkcsc 2010-09-07 20:55:29

0

我會研究重寫您的路線,以包括在路徑中的照片ID。

例如,/ Gallery/Index/100而不是?photo = 100。這就是爲什麼你的ActionLink方法不能如何工作,因爲查詢字符串不是路由的一部分。

+0

Axaj.Actionlink方法按預期工作。他們執行對服務器端方法的異步調用並更新DOM中的元素 - 此過程不會更新URL(如預期的那樣)。給路由的方法不會改變這種行爲。如果只更新頁面的一部分,它會比普通鏈接更快,但由於地址欄URL不會更改,因此這是一個問題 - 這是我想要解決的問題。 – mrkcsc 2010-09-07 20:14:21