2017-08-29 77 views
0

傳遞給局部視圖目前,我有這個作爲我的代碼:獲取JSON和從控制器

public ActionResult Search(SearchModel model) 
    { 
     string url = "http://10.0.2.31/testwebapi/api/data"; 
     WebClient wc = new WebClient(); 

     wc.QueryString.Add("forename", model.Forename); 
     wc.QueryString.Add("surname", model.Surname); 
     wc.QueryString.Add("caseid", model.CaseId); 
     wc.QueryString.Add("postcode", model.Postcode); 
     wc.QueryString.Add("telephone", model.Telephone); 
     wc.QueryString.Add("email", model.Email); 
     wc.QueryString.Add("title", model.Title); 

     var data = wc.UploadValues(url, "POST", wc.QueryString); 


     var responseString = Encoding.Default.GetString(data); 

     return PartialView("~/Views/Shared/SearchResults.cshtml", responseString); 

    } 

    public class RootObject 
    { 
     public int Caseid { get; set; } 
     public string Title { get; set; } 
     public string Forename { get; set; } 
     public string Surname { get; set; } 
     public string Postcode { get; set; } 
     public string Telephone { get; set; } 
     public string Email { get; set; } 
     public string DOB { get; set; } 
     public string Mobile { get; set; } 
     public string MaritalStatus { get; set; } 
     public string LoanPurpose { get; set; } 
     public bool CourtesyCall { get; set; } 
     public string isOpen { get; set; } 
    } 

林不知道我要去的地方錯了,我希望它能夠實現自己的數據從web api(它返回一個json文件)。那麼我想要做的就是將這些數據發送到我的部分視圖,其中@foreach語句將它放到表中,但我似乎無法讓它發送數據,它將它作爲字符串進行互操作,我不知道爲什麼

這是它是如何返回:

enter image description here

@model string 
@{ 
    Layout = null; 
} 

@foreach(var Case in Model) 
{ 
    <p>@Case</p> 
} 

局部視圖代碼。

這是我的部分,現在看起來像:

@model IEnumerable<Savvy_CRM_MVC.Models.RootObject> 
@{ 
    Layout = null; 
} 
@foreach (var m in Model) 
{ 
    <p>@m</p> 
} 

,當我通過運行的每個都被給了我這個Savvy_CRM_MVC.Models.RootObject

+1

你局部視圖的代碼是什麼 – BurnsBA

+0

@BurnsBA將它加到底部爲你 –

+0

如果你對一個字符串(可枚舉)進行迭代,你將評估每個字符。 – BurnsBA

回答

1

的問題是,你要綁定你的模型到原始的JSON字符串。

您需要將JSON字符串反序列化到您的RootObject類並使用RootObject作爲您的視圖的模型。

以下代碼用戶Newtonsoft JSON.net對字符串進行反序列化;

var rootObjects = JsonConvert.DeserializeObject<RootObject[]>(responseString); 

return PartialView("~/Views/Shared/SearchResults.cshtml", rootObjects); 

,並查看改變

@model IEnumerable<RootObject> 

你也將需要更改視圖顯示模型的屬性。

+0

@model RootObject []錯誤 –

+0

更新模型聲明。 – Fran

+0

仍強調說「無法找到'RootObject'的類型或名稱空間 –