我使用“重定向后发布”(http://en.wikipedia.org/wiki/Post/Redirect/Get)模式来解决刷新问题,解决了问题,但在POST和随后的GET之后,我没有看到URL更改。POST后的重定向不会更改网址
这里是我的设置:
我有一些相当广泛的客户端验证一个表单,然后提交。
@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),I可以通过GET动作步骤的东西重定向后退货(任一)。我希望浏览器中的所有网址都是http://mydomain.com/NamedRoute/NamedRouteAction,但是它的网址是http://mydomain.com/Order/AddItem。为什么是这样? RedirectToRoute不应该更改URL吗?
我错过了什么?
这就是问题所在,你不知何故,jQuery手机是罪魁祸首。此外,jQuery手机有这个很酷的小数据参数(data-ajax =“false”),可以“关闭”这种行为。 –
太棒了!非常感谢你们,这非常有用! – hhh