【发布时间】:2011-10-19 15:56:10
【问题描述】:
我的第一篇文章...
当我使用 RedirectToAction 时,浏览器中的 url 不会改变。我怎样才能做到这一点?
在使用 Web 表单 10 多年后,我正在切换到 ASP.NET MVC 3.0(也使用 jQuery Mobile)。我已经完成了大约 8 周,经过几本书并在 Google 上搜索了答案,我快要干了。
我在 Global.asax 中定义了一条路线:
routes.MapRoute(
"Routes",
"{controller}/{action}/{id}",
new { controller = "Shopping", action = "Index", id = UrlParameter.Optional }
我有一个包含以下操作的 ShoppingController:
public ActionResult Cart() {...}
public ActionResult Products(string externalId) {...}
[HttpPost]
public ActionResult Products(List<ProductModel> productModels)
{
// do stuff
return RedirectToAction("Cart");
}
当我进行获取和发布(帖子具有 RedirectToAction)时的 url 始终是:
/Shopping/Products?ExternalId=GenAdmin
在发布和 RedirectToAction 之后,我希望浏览器中的 url 更改为:
/Shopping/Cart
我尝试过 Redirect 和 RedirectToRoute,但得到了相同的结果。
任何帮助将不胜感激。
[更新] 我发现 jQuery Mobile AJAX 帖子是这里的罪魁祸首。如果我关闭 jQuery Mobile 的 AJAX 就可以了。
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
<script type="text/javascript">
// do not handle links via ajax by default
$(document).bind("mobileinit", function () { $.mobile.ajaxEnabled = false; });
</script>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0rc2/jquery.mobile-1.0rc2.min.css" />
上述脚本的顺序很重要。我必须先将脚本包含到 jQuery 中,然后包含脚本以禁用 jQuery Mobile 对 AJAX 的使用,然后再将脚本包含到 jQuery Mobile。
我仍然想找到一种使用 AJAX 并正确更新 url 的方法。或者至少能够调用 jQuery Mobile 的“正在加载”消息(或烘焙我自己的)。
【问题讨论】:
标签: asp.net-mvc-3 jquery-mobile asp.net-mvc-routing