2011-04-25 34 views
0

我正在使用Ext.Net TreeGrid在MVC項目上工作。我有一個頁面「PieChart2」上的treegrid。當我第一次加載PieChart2時,我加載了具有根節點的樹。當我點擊其中一個節點時,我想在相同的URL中傳遞節點ID(/Home/PieChart2/nodeid)。我嘗試通過在treegrid的click事件中使用以下代碼重定向到一個URL來實現此目的。Response.RedirectToRoutePermanant不改變客戶端的URL

idVal是treenode被點擊的節點ID。

string newUrl = "/Home/PieChart2/" + idVal ; 

Response.RedirectToRoutePermanent("PieRoute", new { id = idVal }); 

PieRoute在Global.asax中看起來像這樣。

routes.MapRoute("PieRoute", "{controller}/{action}/{id}", new { controller = "Home", action = "PieChart2", id = UrlParameter.Optional }); 

我看到兩個請求到服務器重定向1)301狀態碼與原始URL和2)新的URL。 Url也被正確處理,但瀏覽器仍顯示「/ Home/PieChart2」而不是「Home/PieChart2/nodeid」。

我正確的做法嗎?如果是的話,可能是它不起作用的原因是什麼?

+0

一個愚蠢的問題 - 最初的HTTP請求是通過AJAX還是通過標準的同步HTTP post?如果通過AJAX請求,您是否在處理AJAX代碼中的HTTP 301重定向? – 2011-04-25 04:16:25

+0

單,它是一個同步HTTP請求。謝謝 – 2011-04-25 17:52:59

+0

我看到 - 在客戶端,您如何處理Ajax代碼中的重定向請求?如果你沒有安置它,你可能不得不這樣做。以http://stackoverflow.com/questions/199099/how-to-manage-a-redirect-request-after-a-jquery-ajax-call爲例。 – 2011-04-25 19:23:41

回答

0

瀏覽器應該更新,除非這是ajax調用或來自框架元素內的調用。在這些情況下,它不會通過設計。

+0

亞當,它當然是來自一個框架元素。有沒有辦法從框架內更新主窗口的URL?謝謝! – 2011-04-25 17:52:17

+0

不會 - 這會是一個很大的安全問題..當我在其他「不好」的網站上時,我可以說www.google.com。如果你想要它更新你的主窗口必須是你正在加載的問題的URI。在Firefox的前例中,雖然你可以右鍵點擊特定的頁面部分並查看它的信息以查看鏈接。這是框架的樂趣。我想你可以改變父母URI的結尾。 xyz.com/default.aspx#sometag,但這當然不會改變整個URI – 2011-04-30 03:41:44