0

私はMVC3を使用しています。jqueryの投稿を行った後にredirectToActionを試みています。

編集:具体的ではないことをお詫び申し上げます。RedirectToActionが返されるたびに、同じページが更新され、同じ現在のビューに戻ります。

私のビューコードは次のとおりです。

 $("button[name='command']").click(function () {

        var checked_status = null;
        if ($("#select_all").is(':checked')) {
            checked_status = true;
        } else {
            checked_status = false;
        }

        $.post('@Url.Action("SaveInvitations", "Contractors")',
              {
                  command: $(this).val(),
                  selectedContractors: $("input[name='selectedContractors']:checked").map(function () { return $(this).val(); }).get().join(","),
                  page: $(".selected").text(),
                  CheckedAll: checked_status
              });
    });

私のコントローラーには次のものがあります。

        if (command == "skip")
        {
            TempData["message"] = string.Format("No contractors where selected");
            RedirectToAction("Index", "Home");
        }
        else
        {
...
TempData["message"] = string.Format("The invitations have been send successfully.");
                Session["subModel"] = null;
                return RedirectToAction("Index", "Home");
}

次に、jquery$.postの後にredirectToActionを実行しようとしています。それを機能させるために私は何をしなければなりませんか?

4

1 に答える 1

9

RedirectToActionはサーバー側のメソッドです。jQueryの投稿を行っているので、投稿が完了したら、おそらくそれを行う必要があります。

 $.post('@Url.Action("SaveInvitations", "Contractors")',
              {
                  command: $(this).val(),
                  selectedContractors: $("input[name='selectedContractors']:checked").map(function () { return $(this).val(); }).get().join(","),
                  page: $(".selected").text(),
                  CheckedAll: checked_status
              },function(){
  window.location.href='@Url.Action("Index", "Home")';
});

doneを明示的に呼び出して読みやすくすることで、上記のメソッドを作成する別の方法を次に示します。

 var url='@Url.Action("SaveInvitations", "Contractors")';
 var data =  {
                  command: $(this).val(),
                  selectedContractors: $("input[name='selectedContractors']:checked")
                          .map(function () { return $(this).val(); }).get().join(","),
                  page: $(".selected").text(),
                  CheckedAll: checked_status
             };
 $.post(url,data)
  .done(function(){
        window.location.href='@Url.Action("Index", "Home")';
   });

jQuery ajax操作の後にリダイレクトを実行している場合は、Actionメソッド(通常のフォーム投稿)を直接呼び出して、そこからリダイレクトしてみませんか?人々は通常、jQueryajax操作を使用してページを部分的に更新します。このようにしてよろしいですか?

于 2012-04-16T16:30:01.857 に答える