ASP.NET MVC将动态Json数据传递到模型中以在部分视图中返回

时间:2017-10-18 01:32:31

标签: c# json asp.net-mvc

我正在开发一个ASP.NET MVC项目,我有一个控制器,我从外部Web API获取JSON数据。现在我想反序列化这个JSON数据并将其放入最终将传递到部分视图的模型中。

JSON数据:

{
"results":[
{
    "name":"Company A",
    "providerName":"Company Provider A"
...(More Data Below)

控制器:

[HttpGet]
[Route("company-info/companyinfogetapidata")]
[AllowAnonymous]
public ActionResult CompanyInfoGetApiData(string name, int CompanyCode, string city, string state, int zip)
    {

        /* Json Data is fetched properly */

        var json = request.Result.Content.ReadAsStringAsync().Result; 

        JObject o = JObject.Parse(json);

        JToken ApiData = o["results"];

       // Now I want to pass the JSON data into my model

        CompanyResultsModel getfetcheddata = new CompanyResultsModel();

       // I tried using this method below but it's not working properly

        getfetcheddata = Newtonsoft.Json.JsonConvert.DeserializeObject<CompanyResultsModel>(json);

       // Pass the Model containing into the PartialView Result
        return PartialView(@"~/Views/Shared/companies/_companyResults.cshtml", getfetcheddata);

    }

型号:

public class CompanyResultsModel
{
    public string companyName { get; set; }
    public string companyProvider { get; set; }
}

查看:

@model Companies.CompanyResultsModel

<p>@Model.companyName</p>
<p>@Model.companyProvider</p>

在我将JSON数据传递到我的模型后,如果我使用上面的方法在我的视图中显示数据,它会正确返回我的所有数据吗?

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

您收到的json与您的CompanyResultsModel不符。它匹配包含名为results的属性的模型,该属性是CompanyResultsModel的集合。

创建以下模型

public class JsonResultModel
{
    public IEnumerable<CompanyResultsModel> Results { get; set; }
}

并在控制器中

JsonResultModel model = JsonConvert.DeserializeObject<JsonResultModel>(json);

如果您只想将第一个CompanyResultsModel返回到视图

return PartialView("_companyResults", model.Results.FirstOrDefault());