ASP.NET MVC3 URL和隐藏Id的

时间:2011-05-17 08:21:36

标签: asp.net asp.net-mvc-3 controller url-routing

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

最简单的方法是在下拉列表发生变化时抛弃ajax,然后导航到新的URL(/ Results / Subject / NewID)。

如果你想保留ajax,你可以把密钥放在url的末尾,用#like“/ Results / Subject#53”,然后通过Ajax加载(#53不会被传递到服务器)。这样,当用户更改下拉列表时,您可以导航到“/ Results / Subject#NewID”,而不会重新加载页面。