2011-05-17 74 views
0

我有一堆实体是由ID键。在一个屏幕中,我加载了一个基于ID的“主题”,如下所示:"/Results/Subject/53"在同一屏幕上,我有一个组合框,其中包含所有主题的列表。用户可以将此组合中的选择更改为另一个主题,并使用ajax加载该主题的结果。当我这样做时浏览器中的URL是陈旧的,因为我现在可能正在查看/Results/Subject/45如果用户重新加载,我重新加载原始文档而不是新的。ASP.NET MVC3的URL和隐藏ID的

我想要更新URL(这听起来像是hacky),或者我想将我的导航基于除Id之外的其他内容作为URL的一部分。我怎样才能做到这一点?如何在不指定Id作为URL的一部分的情况下为特定项目加载控制器。

+1

听起来你可以用某种历史插件来跟踪你的Ajax变化。我用[jQuery Address](http://www.asual.com/jquery/address/)取得了一些好成绩, – 2011-05-17 08:26:23

回答

0

最简单的方法是在下拉更改时抛弃ajax,然后导航到新的url(/ Results/Subject/NewID)。

如果你想保留ajax,你可以把关键字放在网址的结尾处,并用类似于“/ Results/Subject#53”的#,然后通过Ajax加载它(#53不会被传递转移到服务器)。这样,当用户更改下拉菜单时,您可以导航到“/ Results/Subject#NewID”,而无需重新加载页面。

1

您也可以通过HTTP GET参数传递id:/Results/Subject?id=45或HTTP POST参数。

但是,我怀疑这会回答你的问题。

我的一位同事遇到了类似的问题,他通过改变浏览器的URL字符串(通过附加一个特定的#anchor)来解决它。