2016-02-11 41 views
0

我正在構建一個MVC5應用程序(使用Razor)。在頂部的導航欄中,我有一個按鈕,可用於反饋的表單淡入。我能夠成功地將這些數據發佈到不同的控制器(而不是當前正在生成的頁面),但是我無法使頁面不加載控制器的發佈方法。我可以重新加載當前頁面,但我想阻止任何屏幕更改。這可能嗎?MVC5發佈到控制器無需離開頁面

我嘗試使用an AJAX method來完成這個,但它沒有奏效。

這裏是認爲我當前的代碼:

<div class="modal fade" id="feedbackForm" tabindex="-1" role="dialog" aria-labelledby="feedbackFormLabel"> 
    <div class="modal-dialog" role="document"> 
     <div class="modal-content"> 
      <div class="modal-header"> 
       <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> 
       <h5 class="modal-title">Feedback for @ViewBag.Title</h5> 
      </div> 
      @using (Html.BeginForm("CreateRemote", "Feedback", FormMethod.Post)) { 
       <div class="modal-body"> 

        @Html.AntiForgeryToken() 

        <div class="form-horizontal"> 
         @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
         <div class="form-group"> 
          @Html.LabelFor(model => model.Pain) 
          <div class="col-md-10"> 
           @Html.EditorFor(model => model.Pain, new { htmlAttributes = new { @class = "form-control" } }) 
           @Html.ValidationMessageFor(model => model.Pain, "", new { @class = "text-danger" }) 
          </div> 
         </div> 
        </div> 

       </div> 
       <div class="modal-footer"> 
        <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button> 
        <input id="FeedbackSubmit" type="submit" value="Submit" class="btn btn-success" /> 
       </div> 
      } 
     </div> 
    </div> 
</div> 

編輯

這是我如何修改它的結束使用AJAX:如果我離開

@*@using (Html.BeginForm("CreateRemote", "Feedback", FormMethod.Post)) {*@ 
    <div class="modal-body"> 

     @Html.AntiForgeryToken() 

     <div class="form-horizontal"> 
      @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
      <div class="form-group"> 
       @Html.LabelFor(model => model.Pain) 
       <div class="col-md-10"> 
        @Html.EditorFor(model => model.Pain, new { htmlAttributes = new { @class = "form-control" } }) 
        @Html.ValidationMessageFor(model => model.Pain, "", new { @class = "text-danger" }) 
       </div> 
      </div> 
     </div> 

    </div> 
    <div class="modal-footer"> 
     <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button> 
     <input id="FeedbackSubmit" value="Submit" class="btn btn-success" /> 
     <script type="text/javascript"> 
      $('#FeedbackSubmit').click(function() { 
       var url = "/Feedback/CreateRemote"; 
       var pain = 10; 
       $.post(url, { LanId: 'C15919' }, function (data) { 
        alert(data); 
       }); 
      }) 
     </script> 
    </div> 
@*}*@ 

原樣,input不採取任何操作,並且不會調用控制器。如果我將其更改爲<input type="submit" ....,則該頁面將更改爲控制器的POST操作。

+0

可以完成,隨着AJAX。 –

+0

我試過了,但沒有奏效。不過,我對AJAX不太熟悉,所以我可能會做錯了。 –

+0

如果您想在不刷新頁面的情況下將數據發佈到後端,AJAX是一種適用的技術。更新您的代碼以顯示您在AJAX上的嘗試。您現在顯示的代碼將執行正常的HTTP發佈,因此對回答您的問題沒有幫助。 –

回答

0

您是否嘗試過使用類型=「按鈕」提交按鈕,還可以使用如下的Ajax調用:

var p = { Data: $('#search').val() }; 

$.ajax({ 
     type: 'POST', 
     url: "/Feedback/CreateRemote", 
     data: JSON.stringify(p), 
        dataType: "json", 
        contentType: "application/json; charset=utf-8", 
       success: function (data) { 
        alert(data); 
       }, 
       error: function() { 
        alert("error"); 
       } 
});