2016-03-04 29 views
4

我正在開發ASP.NET MVC中的應用程序。我正在使用一些用戶輸入值的頁面上工作,然後使用存儲過程從它們獲取數據集。我的首選是數據輸入到顯示的同一頁面上,所以我使用AJAX和部分視圖來完成此操作。我的代碼與一組簡單的數據(簡單的字符串)完美配合,但現在我使用了更高級的數據集(Ienumerable),它不再顯示局部視圖。部分視圖忽略數據集並不顯示

這是我的視圖(在其中輸入數據被隱藏的長度目的文本框)的一部分:

<!--SEARCH RESULTS PARTIAL FILLED BELOW--> 
<div id="search-results"> 

</div> 
<!----> 


<script> 
    function getSearchResults() { 

     var SqlViewModel = { 
      //assign textboxes to values to pass to controller (hidden) 
     } 

     $.ajax({ 
      type: "POST", 
      data: JSON.stringify(SqlViewModel), 
      dataType: "json", 
      contentType: "application/json", 
      url: "/Sql/Search/", 
      success: function(result) { 
       $('#search-results').html(result); 
      } 
     });  } 


</script> 

我抓住從文本框的數據,然後將值傳遞到我的「搜索」控制器方法使用我的ajax。 (值全部通過正確使用SqlVieWModel)

控制器方法:

[HttpPost] 
    public ActionResult Search(SqlViewModel sT) 
    { 
      //code for stored procedure 

     var sql = //get stored procedure and parameters   

     SqlPartialViewModel obj = new SqlPartialViewModel(); 
     obj.SqlData = sql; //obj.SqlData is of type IEnumerable<Get_Result> 

     return PartialView("_SearchResultsPartial", obj); 

SqlPartialViewModel定義:

public class SqlPartialViewModel 
{ 
    public IEnumerable<Get_Result> SqlData { get; set; } 
} 

最後,我試圖簡單地得到這些數據在我的局部視圖,以顯示(_SearchResultssPartial .cshtml):

@model SqlPartialViewModel 

<table> 
<tr> 
    <th>//Display stuff</th> 

</tr> 
@foreach(var result in Model.SqlData) 
{ 
<tr> 
    <td>//Display stuff</td> 
</tr> 
} 

沒有顯示,我也沒有收到任何錯誤。

回答

4

在你的Ajax調用,你從服務器期待json結果:

$.ajax({ 
     type: "POST", 
     data: JSON.stringify(SqlViewModel), 
     dataType: "json", <---- HERE 
     contentType: "application/json", 
     url: "/Sql/Search/", 
     success: function(result) { 
      $('#search-results').html(result); 
     } 
}); 

但是,當你從ActionResult返回PartialView,你回來html類型,而不是json類型。

只是將dataType更改爲"html"或刪除該行(所以JavaScript會嘗試自行解釋)。

+1

太棒了!它更改爲「html」後工作。 –