2017-06-26 1 views
0

私はこの質問が尋ねられた時代を見てきました。それにもかかわらず、私はAjax Actionlinkを呼び出して、ブートストラップ・モーダルが関わっているときに、まだ2つのプロセスを実行しています。関連するコードはすべてここにあります。私は一つだけunobtrusivesのそれぞれのが含まれています表示するにはバンドルを含めています:Ajax Actionlinkが、ブートストラップ・モーダルであるパー​​シャル・ビューを返すときに、なぜ2回提出するのですか?

レイアウト:

<div id="mainBody" class="container body-content"> 
     @RenderBody() 
    </div> 

    @Scripts.Render("~/bundles/jquery") 
    @Scripts.Render("~/bundles/jqueryval") 
    @Scripts.Render("~/bundles/bootstrap") 
    @RenderSection("scripts", required: false) 

コントローラー:

public ActionResult ReleaseVersion(string LOCATION_NUMBER = "") 
      { 
       ... 

       model.ReleaseVersionVMInfo = rvmodel; 

       if (Request.IsAjaxRequest()) 
       { 
        return PartialView("_ReleaseVersion", model); 
       } 
       return PartialView("_ReleaseVersion", model); 
      } 

ビュー:

    <div class="col-xs-3"> 
         <div class="row Padding_ExtraVert"> 
          @Ajax.ActionLink("Release Version", 
          "ReleaseVersion", 
          "Stores", 
          new { LOCATION_NUMBER = Model.storeNbr }, 
          new AjaxOptions 
          { 
           UpdateTargetId = "ReleaseModal", 
           InsertionMode = InsertionMode.Replace, 
           HttpMethod = "GET", 
           OnFailure = "storeSearchFailed" 
          }, 
          new 
          { 
           @class = "col-xs-5 btn btn-sm button-v 
            button-alt-1 Button_StoreHead", 
           @id = "BtnViewRelease", 
           data_target = "#ReleaseModal", 
           data_toggle = "modal" 
          }) 
         </div> 

見ますこのアクションリンクによって呼び出されます:

@model EpmPortal.Models.App.StoreReleaseVersionVM

@If(ヌルモデル!= & & Model.storeNbr!= "0") { .... 閉じます

ありがとうございました

+0

コメントとして追加するには時間がかかりすぎますが、一度だけ追加される関連バンドルコードをすべて表示するのを忘れていましたが、.jsではなく適切なところに.min.jsを追加しました。 –

答えて

0

次のコードを実行して、アクションReleaseVersionにブレークポイントを設定すると、このアクションに1回しかヒットしないため、1つのプロセスしか存在しません。

コントローラ/モデル:

public class StoreViewModel 
{ 
    public int storeNbr { get; set; } 
} 

public class HomeController : Controller 
{ 
    public PartialViewResult ReleaseVersion(string LOCATION_NUMBER = "") 
    { 
     return PartialView("_ReleaseVersion"); //, model 
    } 

    public ActionResult IndexValid4() 
    { 
     var storeViewModel = new StoreViewModel { storeNbr = 5 }; 
     return View(storeViewModel); 
    } 

共有フォルダ内のパーシャルビューの_ReleaseVersion:

release version partial view 

ビュー:

<!DOCTYPE html> 
<html> 
<head> 
    <meta name="viewport" content="width=device-width" /> 
    <title>IndexValid4</title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"> 
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
    @*MAKE SURE to put the next script in*@ 
    <script src="http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.unobtrusive-ajax.min.js"></script> 
    <script type="text/javascript"> 
     $(function() { 
      $('#LOCATION_NUMBER').click(function() { 
       var store = $('#storeNbr').val(); 
       this.href = this.href.split("?")[0]; 
       this.href = this.href + '?LOCATION_NUMBER=' + encodeURIComponent(store); 
      }); 
     }) 
    </script> 
</head> 
<body> 
    <div> 
     <a data-toggle="modal" data-target="#myModal"> 
      Click to Open modal 
     </a> 
    </div> 
    <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> 
     <div class="modal-dialog" role="document"> 
      <div class="modal-content"> 
       <div class="modal-header"> 
        <h4 class="modal-title" id="myModalLabel">My Modal</h4> 
       </div> 
       <div class="modal-body"> 
       </div> 
       <div class="modal-footer"> 
        <label class="btnIEFix">You can also, Click in Grey Area Outside Modal To Close</label> 
        <button title="You can also, Click in Grey Area Outside Modal To Close" type="button" class="btn btn-secondary bootBtnMargin" data-dismiss="modal">Close</button> 
       </div> 
      </div> 
     </div> 
    </div> 
    @Html.HiddenFor(r => r.storeNbr, new { id = "storeNbr" }) 
    @*https://stackoverflow.com/questions/5838273/actionlink-routevalue-from-a-textbox*@ 
    @Ajax.ActionLink(
            "Trigger Ajax", 
              "ReleaseVersion", 
             null, 
             new AjaxOptions 
             { 
              UpdateTargetId = "result", 
              InsertionMode = InsertionMode.Replace, 
              HttpMethod = "GET" 
             }, 
               new 
               { 
                id = "LOCATION_NUMBER", 
                @class = "col-xs-5 btn btn-sm button-vbutton-alt-1 Button_StoreHead", 
                data_target = "#myModal", 
                data_toggle = "modal" 
               }), 

    <div id="result"></div> 
</body> 
</html> 
+0

あなたはそれを踏んだことがありますか?なぜなら、私がそれをすると、それは一度呼び出されたように見えるが、その後、ジャンプしていくつかのことをやり直して、以前とは異なるスレッドであることを示す少しのツールチップのコメントを持っている。次に、ログを見ると、2つのプロセスが実行中であることがわかります。 –

+0

これらの両方が原因である可能性がありますか? "〜/ Scripts/jquery.validate.min.js"、 "〜/ Scripts/jquery.validate.unobtrusive.min.js")); –

+0

@ JohnC.IT両方のスクリプトを変更せずに追加しました。 Ajax.ActionLinkはアンカー要素に変わり、私はこことReleaseVersionメソッドにブレークポイントを設定します。 "戻って物事をやり直す..."、あなたが見ていることを私に理解させることができますか?私はあなたのポストからいくつかのコードを飾る必要がありました。投稿を編集して、コピーして貼り付けるだけで、あなたが見ているものを正確に見ることができますので、私は助けることができますか? – kblau

0

ああ兄弟、それはそれは私とは全く違うものだ判明期待される。私のプログラムの別の支店では、私はまだ実際に作業を始めていなかった、私はそこに部分的なビューを持っていた、それは上の共有フォルダから_Layoutを持っていた - それ以外は何もそれを識別するカミソリのタイトル。それが重複した実行を引き起こした原因です。なぜ私は考えていない。そのコードは決して触られません。これにつきましては申し訳ございません。

関連する問題