简体   繁体   English

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

[英]ASP.NET MVC Pass Dynamic Json Data into Model to return in Partial View

I'm working on a ASP.NET MVC project and I have a controller where I am getting JSON data from an external Web API. 我正在研究ASP.NET MVC项目,并且有一个控制器,可以从外部Web API获取JSON数据。 Now I want to deserialize this JSON data and put it into a model that will eventually be passed into a Partial View. 现在,我想反序列化此JSON数据并将其放入一个模型中,该模型最终将传递到Partial View中。

JSON Data: JSON数据:

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

Controller: 控制器:

[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);

    }

Model: 模型:

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

View: 视图:

@model Companies.CompanyResultsModel

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

After I pass in the JSON data into my model, if I use this method above for displaying the data in my view, will it return all of my data properly? 将JSON数据传递到模型后,如果我在上面使用此方法在视图中显示数据,它将正确返回我的所有数据吗?

Any help is greatly appreciated! 任何帮助是极大的赞赏!

The json your receiving does not match your CompanyResultsModel . 您收到的json与您的CompanyResultsModel不匹配。 It does match a model that contains a property named results which is a collection of CompanyResultsModel . 它确实与包含名称为results的属性的模型匹配,该属性是CompanyResultsModel的集合。

Create the following model 创建以下模型

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

and in the controller 并在控制器中

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

and if you want to return only the first CompanyResultsModel to the view 并且如果您只想将第一个CompanyResultsModel返回到视图

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM