2016-03-04 4 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); 
     } 
}); 

Но когда вы возвращаете PartialView из ActionResult, вы возвращения html типа, а не json типа.

Просто измените dataType на "html" или удалите эту строку (поэтому javascript будет пытаться интерпретировать сам по себе).

+1

Удивительный! Он работал после перехода на «html». –