0

IE9でMVC3、c#を使用しています。コントローラーには、重要な次の2つのActionResulsがあります。

    public ActionResult EditTrain(String trainid)
    {
       ....
       return PartialView(edittrain);
    }


    [HttpPost]
    public ActionResult EditTrain(Train editrain)
    {
       ....
       DataContext.SubmitChanges();      
       return RedirectToAction("Edit", new { id = trainid });                  
    }

部分ビューでは、次のコードがあります。

    @model Models.EditTrain
    @{
       ViewBag.Title = "Training";
    }

    <h2>Train</h2>
    @using (Html.BeginForm(null, null, FormMethod.Post, new { id = "theForm" }))
    {
      @Html.ValidationSummary(false)

      @Html.HiddenFor(model => model.ID)

      <div class="display-label" style="font-weight: normal">
       @Html.Label("ID:")
      </div>
      <div class="display-field">
       @Html.DisplayFor(model => model.ID)
      </div>   

      <div class="display-label" style="font-weight: normal">
        @Html.Label("KitID:")
      </div>
      <div class="display-field">
       @Html.DisplayFor(model => model.KitID)
      </div> 

      <div class="editor-label">
         @Html.Label("Inactive:")
      </div>
      <div class="editor-field">
         @Html.EditorFor(model => model.Inactive)
      </div>    

      <div class="editor-label">
       @Html.Label("Inactive Date:")
     </div>   

     <div id='datepicker' class="editor-field">
       @Html.EditorFor(model => model.InactiveDate)
     </div> 
      ......
      <div style="clear:left;"> 
       <br />         
       <p>
        <input type="submit" id="submit" value="Submit" />
       </p>
      </div> 
    }  

   <script type="text/javascript">

   $.ajaxSetup({ cache: false }); 

   $(document).ready(function () {

     $("#submit").click(function () {

       $.ajax({
               type: "POST",
               url: url,
               data: $('#theForm').serialize()
             });

       $("#stlist").load('@Url.Action("KitsEdit","Spr")' + '?id=' +  '@Model.sprid');

     });
   });

上記のコードで、私が上記でやりたいことは、ユーザーが送信をクリックすると、次のアクションに進むのが好きだということです。

    [HttpPost]
    public ActionResult EditTrain(Train editrain) 

次に、ビューに戻り、次のコードを実行します

       $("#stlist").load('@Url.Action("KitsEdit","Spr")' + '?id=' +  '@Model.sprid');

何が起こっているのかというと、それは上記を実行しますが、実行後です

    $("#stlist").load('@Url.Action("KitsEdit","Spr")' + '?id=' +  '@Model.sprid'); 

それは実行されます

    [HttpPost]
    public ActionResult EditTrain(Train editrain)

もう一度。

どうすればそれが行くのを防ぐことができますか

    [HttpPost]
    public ActionResult EditTrain(Train editrain) 

.load()の後。

4

2 に答える 2

0

request.Abort()を使用できます

$(document).ready(function () {

     $("#submit").click(function () {

       var request = $.ajax({
               type: "POST",
               url: url,
               data: $('#theForm').serialize()
             });

       $("#stlist").load('@Url.Action("KitsEdit","Spr")' + '?id=' +  '@Model.sprid');
request.Abort()
     });
   });
于 2012-07-11T15:44:44.170 に答える
0

ハンドラーfalseから戻る必要があります。.click()しかし、コードを見ると、概念的に何か問題があります。.loadこの AJAX 要求が完了するのを待たずに、AJAX 要求を開始した直後にメソッドを呼び出します。また、AJAX を使用して別のアクションにリダイレクトするコントローラー アクションを呼び出しても、ほとんど意味がありません。

于 2012-07-11T15:42:43.443 に答える