2015-03-02 3 views
1

Полной ошибкамодель элемент передается в словарь типа «System.Net.Http.HttpResponseMessage»,

Модели элемент передается в словарь типа «System.Net.Http.HttpResponseMessage» , но для этого словаря требуется элемент модели типа 'System.Collections.Generic.IEnumerable`

Я пытаюсь получить некоторые данные из веб-api с помощью viewmodel.

Это мое действие

public ActionResult PayBilgileri() 
    { 
     Session["dersGrupID"] = 470122; 
     int DersGrupID = Convert.ToInt32(Session["dersGrupID"]); 

     Core.ViewModel.Ders.DersDetay.PayVeNotBilgileriViewModel PayBilgileri = new Core.ViewModel.Ders.DersDetay.PayVeNotBilgileriViewModel(); 

     PayBilgileri.DersPlanID = DersGrupID; 

     using (var client = new HttpClient()) 
     { 
      client.BaseAddress = new Uri("http://myapi.com"); 
      client.DefaultRequestHeaders.Accept.Clear(); 
      client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
      //HttpResponseMessage response = client.GetAsync("api/Ders/ListelePaylarVeNotBilgileri").Result; 
      var response = client.PostAsJsonAsync("api/Ders/ListelePaylarVeNotBilgileri", PayBilgileri).Result; 
      if (response.IsSuccessStatusCode) 
      { 

      } 
      return PartialView(response); 
      // PartialViewResult(response, JsonRequestBehavior.AllowGet); 
     } 

    } 

И частичный вид

@model IEnumerable<Core.ViewModel.Ders.DersDetay.PayVeNotBilgileriViewModel> 

<table class="table"> 

@foreach (var item in Model) 
{ 
    <tr> 
     <td> 
      @Html.DisplayFor(modelItem => item.KatkiOrani) 
     </td> 
    </tr> 
} 
</table> 
+0

Ошибка кажется довольно ясной: вы передаете объект HttpResponseMessage, который вы возвращаете из PostAsJsonAsync(), прямо в ваш частичный вид, но ваш частичный вид ожидает, что его модель будет иметь тип IEnumerable <> –

+0

Я получил это, но я не знаю Не знаю, как исправить. –

ответ

3

Вам нужно извлечь данные из HttpResponseMessage в IEnumerable<PayVeNotBilgileriViewModel> и только затем передать его в качестве вида-модели:

if (response.IsSuccessStatusCode) 
{ 
    var vm = response.Content.ReadAsAsync<IEnumerable<PayVeNotBilgileriViewModel>>().Result; 
    return PartialView(vm); 
} 

См. ReadAsAsync

Смежные вопросы

 Смежные вопросы