2017-08-29 76 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'的类型或名称空间 –