我正在使用“发布后重定向”(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();
}
“添加项目”控制器:
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 吗?
我错过了什么?