asp.net-mvc – POST后重定向不会更改URL
我正在使用“重定向后发布”(http://en.wikipedia.org/wiki/Post/Redirect/Get)模式来解决它解决的刷新问题,但我没有看到URL更改后POST和随后的GET.
这是我的设置: 我有一个表格,有一些非常广泛的客户端验证,然后提交. @using (Html.BeginForm("AddItem","Order",FormMethod.Post,new { Id = "addItemForm" })) { // form stuff } 客户端验证: $('#addToOrder').click(function () { // do a bunch of validation stuff. } if (criteriaMet) { $('#addItemForm').submit(); } “AddItem”控制器: public class OrderController { [HttpPost] public ActionResult AddItem(long? orderId,long menuItemId) { if (oneConditionIsTrue) { return RedirectToRoute("NamedRoute1",new { RouteValueDictionary values }); } else { return RedirectToRoute("NamedRoute2",new { RouteValueDictionary values }); } } public class NamedRouteController { public ActionResult NamedRouteAction { // do some stuff if (mobile) { return View("MobileView",model); } else { return View("RegularView",model); } } 从POST操作(AddItem)重定向后,我可以通过GET操作将其返回到返回(任一个).我希望在所有这些之后浏览器中的URL为http://mydomain.com/NamedRoute/NamedRouteAction,但它是http://mydomain.com/Order/AddItem.为什么会这样? RedirectToRoute不应该更改URL吗? 我错过了什么? 解决方法
我怀疑控制器动作是以某种方式使用AJAX请求调用的.例如,如果您使用jQuery Mobile或其他东西,可能会发生这种情况.或者也许还有其他一些你编写过的脚本 – 它劫持了表单提交并发送了一个AJAX请求.因为它是一个AJAX请求,所以你不可能期望客户端浏览器中的url会发生变化 – 这就是AJAX的重点 – 保持在同一页面上.
通过使用诸如FireBug之类的javascript调试工具,可以非常轻松地验证这一点.只需查看“网络”选项卡,查看POST请求是否为AJAX请求.在Net选项卡中找到请求,看看是否有以下请求标头: X-Requested-With: XMLHttpRequest jQuery将此HTTP标头附加到它发送的所有AJAX请求中. 因此,基本上如果您希望在POST请求之后发生重定向,则不应使用AJAX来提交表单.或者更确切地说:重定向发生在服务器端(再一次,您将能够在FireBug中看到它 – 302状态代码),然后XMLHttpRequest只是遵循此重定向,但客户端浏览器不会更改其当前位置. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 在单个事务上包装成员资格提供程序和dbcont
- StructureMap和ASP .Net Web API和.Net Framework 4.5
- asp.net-mvc – 具有适当的敲除绑定的网格小部件
- 在ASP.NET MVC中为复杂数据验证放置数据管理规则的位置?
- asp.net core中AddTransient,AddScope和AddSingleton有什么
- asp.net – 在wcf服务中使用aspNetCompatibilityEnabled =“
- asp.net-mvc – 实体框架 – 如何防止创建列的模型属性?
- ASP.NET -- WebForm -- Cookie的使用
- ASP.NET MVC4异步聊天室
- asp.net-mvc – 为什么我的样式表重定向到我的登录?
- asp.net-mvc – MVCMailer SendAsync和删除附件
- asp.net-mvc – asp.net mvc:如何模拟Url.Conte
- asp.net-mvc – 用于新的Asp.net CMS站点的Oxite
- asp.net-mvc – ASP.NET MVC Intellisense没有找
- asp.net – 发布时母版页无法加载类型错误
- asp.net-mvc – 如何在不同的控制器中管理MVC区域
- 使用MVC和ASP.NET身份认证网址
- asp.net – aspnet_regiis -ga的对面
- asp.net-mvc – EditorTemplates / Object.cshtm
- asp.net – 如何向python中的.aspx页面提交查询