2011-04-25 44 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