「投稿後にリダイレクト」(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();
}
「PASSWORD」コントローラー:
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アクション(PASSWORD)からリダイレクトした後、GETアクションを介してリターン(いずれか)に進むことができます。このすべての後のブラウザのURLはhttp://mydomain.com/NamedRoute/NamedRouteActionであると思いますが、それはhttp://mydomain.com/Order/PASSWORDです。どうしてこれなの?RedirectToRouteはURLを変更すべきではありませんか?
私は何が欠けていますか?