2017-02-13 51 views
1

我的問題是這樣的: 我必須點擊一個按鈕後刷新的局部視圖。此PartialView包含一個表格,其中填充了一個foreach循環。我使用一個控制器動作ValidateControl,它給了我正確的數據(我已經手動檢查過)。但是,使用下面的代碼,當我點擊我的按鈕並完成治療時,表格是空的!它甚至不能正確顯示。C#MVC 5剃刀:更新與阿賈克斯的局部視圖失敗

我檢查了,似乎unobstrusive Ajax和JavaScript已啓用。我從我的控制器操作中獲得了正確的結果,但它似乎沒有正確顯示/顯示。我已經檢查了很多東西,但是我似乎很快就來了!你能幫我解決這個問題嗎?

視圖(相關代碼只):

<table class="contentTable contentTable-evo"> 
       <thead> 
        <tr> 
         <th class="noWrap width1percent"> 
          // Multiple THs with content, snipped out for length 
         </th> 
        </tr> 
       </thead> 
       <tbody id="tableControl">      
         @Html.Partial("_ControlTable") 
       </tbody> 
       </table> 

局部視圖(僅適用於相關的代碼):

@model PagedList.IPagedList<ProjectName.Models.ArticleControl> 
@using PagedList.Mvc 
@using PagedList 
@{ 
    Layout = null; 
    int i = 0; 
} 
@foreach (var item in Model) 
      { 
       if (item.IsNewValue == 1) 
       { 
     <tr> 
      <td class="noWrap width1percent tri"> 
// Loads of <tr>s and <td>s after that. 

腳本(相關代碼只):

function validateResults(data) { 
     $.ajax({ 
      url: '@Url.Action("ValidateControl", "Article")', 
      type: "POST", 
      data: { data:data} 
     }).complete(function (result) { 
      $("#tableControl").html(result); 
      $("#divLoading").hide(); 
     }); 
    } 

編輯 ValidateControl行動(相關代碼只):

using (var ctxt = new Connection(connectionName)) 
    { 
     //Loads of code that isn't relevant but adds data to a database 
     ctxt.SaveChanges(); 

     var control = new ArticlesControl(null, 0, 20); 
     return PartialView("_ControlTable", new StaticPagedList<ArticleControl>(control, 1, 20, control.NumberOfArticlesShown)); 
} 

與最終代碼編輯: 爲了方便那些你從谷歌的到來,腳本必須居然是這樣爲了工作:

function validateResults(data) { 
    $.ajax({ 
     url: '@Url.Action("ValidateControl", "Article")', 
     type: "POST", 
     data: { data:data}, 
     success: function (result) { 
      $("#tableControl").html(result); 
      $("#divLoading").hide(); 
     } 
    }); 
} 
+0

如何你ValidateControl行動樣子? –

+0

編輯添加ValidateControl。 –

回答

1

當我這樣做的時候,我對你成功的一部分 - 這可能是你的問題。下面應該工作

function validateResults(data) { 
    $.ajax({ 
     url: '@Url.Action("ValidateControl", "Article")', 
     type: "POST", 
     data: { data:data}, 
     success: function($data) { 
      $("#tableControl").html(result); 
      $("#divLoading").hide(); 
     } 
    }); 
+0

...那麼,你會看看那個。是的,它的工作正常。非常感謝! –

+1

@FrédéricLiard樂意幫忙 - 你也可以捕捉失敗,失敗:function($ data){....}' – Rick

0

如果您的「結果」變量正在與預期的數據正確更新,可能是部分視圖容器有點奇怪。

嘗試增加你的結果特定容器的tableControl TBODY內,甚至以外,在完全不同的地方,只是爲了檢查是否從AJAX調用,查看數據傳輸是否正常工作。

一旦你有你的迴應到視圖容器,你只需要直到你展示它,你想讓它與DOM來調整。