2015-03-02 67 views
1

完整的錯誤傳遞到詞典中的模型項的類型爲「System.Net.Http.HttpResponseMessage」,

傳遞到詞典中的模型項的類型爲「System.Net.Http.HttpResponseMessage」 ,但這本字典需要一個'System.Collections.Generic.IEnumerable'類型的模型項目

我試圖從視圖模型Web api獲取一些數據。

這是我的行動

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

錯誤似乎很清楚:你將PostAsJsonAsync()直接返回的HttpResponseMessage對象直接傳遞給你的局部視圖,但你的局部視圖期望它的模型是IEnumerable <> – 2015-03-02 08:37:25

+0

我知道了,但我不知道不知道如何解決。 – 2015-03-02 08:40:35

回答

3

你需要提取從HttpResponseMessage數據爲IEnumerable<PayVeNotBilgileriViewModel>才把它當作視圖模型:

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

請參閱ReadAsAsync

相關問題