【发布时间】:2012-12-15 07:09:14
【问题描述】:
我正在使用“发布后重定向”(http://en.wikipedia.org/wiki/Post/Redirect/Get) 模式来解决它所解决的刷新问题,但我没有看到POST 和后续 GET 之后的 URL 更改。
这是我的设置:
我有一个包含相当广泛的客户端验证的表单,然后提交。
@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 吗?
我错过了什么?
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-4 routes