2016-02-18 46 views
2

我想獲得一個簡單的列表中的分頁工作,但postactionresult永遠不會被調用。Ajax.BeginForm()不回發給控制器

在調試期間,我可以看到我的按鈕在Chrome調試器中被激活,所以我認爲這個問題是$('form'),但我不知道爲什麼。

同樣通過Chrome控制檯,我可以看到當點擊下一頁/上一頁時頁碼正確計算。

我的控制器中的[HttpPost]操作方法有一個斷點,它永遠不會被調用。

這個問題不在後端的C#中,但是爲什麼表單並沒有在第一時間發佈。

我在哪裏出錯了Ajax和POST回來?

指數:

@model ViewModel 
@{ 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

<h2>Things</h2> 
<div> 

    @Html.ActionLink("Create", "Create", "Things", null, new { @class = "modal-link btn btn-sm" }) 
    <div class="Table"> 
     <div id="thingsList"> 
      @Html.Partial("List", Model.ThingList) 
     </div> 
     @using (Ajax.BeginForm("Index", "Things", FormMethod.Post, new AjaxOptions { HttpMethod = "POST", InsertionMode = InsertionMode.Replace, UpdateTargetId = "thingsList" })) 
     { 
      <input type="hidden" id="CurrentPage" value="@ViewBag.CurrentPage" /> 
      <input type="hidden" id="PreviousPage" value="@ViewBag.PreviousPage" /> 
     } 
     <input type="button" onclick="javascript: PrevBtnClick();" class="btn btn-primary" id="PrevBtn" value="Previous" /> 
     <input type="button" onclick="javascript: NextBtnClick();" class="btn btn-primary" id="NextBtn" value="Next" /> 
    </div> 
</div> 
<script type="text/javascript"> 
    function PrevBtnClick() { 
     if (CalculateAndSetPage("Previous")) { 
      $('form').submit(); 
     } 
    } 
    function NextBtnClick() { 
     if (CalculateAndSetPage("Next")) { 
      $('form').submit(); 
     } 
    } 
    function CalculateAndSetPage(movingType) { 
     var current = parseInt($('#CurrentPage').val()); 
     if (movingType == 'Previous') { 
      current--; 
     } 
     else if (movingType == 'Next') { 
      current++; 
     } 
     else { 
      alert('Something has gone wrong'); 
     } 
     $('#CurrentPage').val(current); 
    } 
</script> 

回答

1

它不回發的原因是因爲它永遠不會獲取$('form') - 這應該很好地工作。

$('#CurrentPage').val(current);下面加return true; - 您的if (CalculateAndSetPage("Previous/next"))的javascript函數詢問是/否(布爾)問題,您的當前腳本不回答。只有這樣才能工作。

相關問題