1

json データを含む agax ポストを介してページを送信してから、他のビューにリダイレクトしています。それはうまくいっています。

 $.ajax({
            url: '/bus/result',
            type: "POST",
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            data: ko.toJSON(bookingInfo),
            success: function (data, textStatus, xhr) {
                window.location.href = data.redirectToUrl;
            }
        });

MVC コントローラー

[AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Result(BusBookingInfo bookingInfo)
        {
            if (Request.IsAjaxRequest())
            {
                return Json(new { redirectToUrl = Url.Action("Booking") });
            }

            //return Redirect("/bus/booking/");
            return RedirectToAction("result");
        }

しかし今、bookingInfo オブジェクトを Booking ビューに渡したいと思いました。クエリ文字列を通過できることはわかっていますが、このモデル オブジェクトの予約ビューをバインドすることは可能ですか?

4

1 に答える 1

3

window.location.href成功時のコールバックの代わりに、

success: function (data, textStatus, xhr) {
    window.location.href = data.redirectToUrl;
}

ここで別のajax/$.post呼び出しを作成し、POSTメソッドを使用してオブジェクトを渡すことができます。

$.ajax({
        url: '/bus/result',
        type: "POST",
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        data: ko.toJSON(bookingInfo),
        success: function (data, textStatus, xhr) {
            $.post(data.redirectToUrl, bookingInfo, function(){
               //TODO: callback
            });
        }
    });

更新: おそらく、TempData ディクショナリがここで役立つ可能性があります...

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Result(BusBookingInfo bookingInfo)
{
   if (Request.IsAjaxRequest())
   {
     TempData["ViewModelItem"] = bookingInfo;
     return RedirectToAction("Booking");
   }
   //return Redirect("/bus/booking/");
   return RedirectToAction("result");
}        

public ActionResult Booking()
{
   var bookingInfo = (BusBookingInfo)TempData["ViewModelItem"];
   //TODO: code
}
于 2013-06-26T08:32:17.027 に答える