从Web api获取Json并从控制器传递到局部视图

时间:2017-08-29 14:03:39

标签: c# json asp.net-mvc

目前我将此作为我的代码:

 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>
}

当我遍历for each时,它给了我这个Savvy_CRM_MVC.Models.RootObject

1 个答案:

答案 0 :(得分:1)

问题是您将模型绑定到原始JSON字符串。

您需要将JSON字符串反序列化为RootObject类,并使用RootObject作为视图的模型。

以下代码用户Newtonsoft JSON.net反序列化字符串;

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

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

并查看更改

@model IEnumerable<RootObject>

您还需要更改视图以显示模型的属性。