C# 如何将JSON响应绑定到ASP MVC中的模型?

C# 如何将JSON响应绑定到ASP MVC中的模型?,c#,asp.net,asp.net-mvc,api,rest,C#,Asp.net,Asp.net Mvc,Api,Rest,所以我是ASP/.NET/C游戏的新手,所以如果您能为我提供任何帮助,我将不胜感激。我现在有一个名为“ProjectController.cs”的控制器,它有一个操作“索引”,应该将“项目”列表传递给视图。我已经创建了控制器、动作、API调用和视图。然而,根据提供的屏幕截图——我在API调用本身中遇到了一个错误——我试图将模型列表返回给控制器,以传递给视图。我通过从加载一个JSON响应来完成这项工作。你知道为什么我在尝试根据模型创建/验证新的项目对象时总是被卡住吗 ProjectControll

所以我是ASP/.NET/C游戏的新手,所以如果您能为我提供任何帮助,我将不胜感激。我现在有一个名为“ProjectController.cs”的控制器,它有一个操作“索引”,应该将“项目”列表传递给视图。我已经创建了控制器、动作、API调用和视图。然而,根据提供的屏幕截图——我在API调用本身中遇到了一个错误——我试图将模型列表返回给控制器,以传递给视图。我通过从加载一个JSON响应来完成这项工作。你知道为什么我在尝试根据模型创建/验证新的项目对象时总是被卡住吗

ProjectController.cs:

namespace MVCProject1.Controllers
{
    public class ProjectController : Controller
    {
        // GET: Project
        public ActionResult Index()
        {
            List<Models.Project> projects = APICalls.GetAllProjects();
            return View(projects);
        }
    }
}
APICalls.cs:

namespace MVCProject1
{
    public class APICalls
    {
        private const string baseUrl = "https://api.10000ft.com/api/v1/{0}?&auth=temp12345=&{1}";

        #region PROJECTS
        public static List<Models.Project> GetAllProjects()
        {
            string requestUrl = string.Format(baseUrl, "projects", "&per_page=200");

            var resultString = RestClient.makeAPICall(requestUrl);
            var resultObject = JsonConvert.DeserializeObject(resultString);

            List<Models.Project> projects = new List<Models.Project>();

            foreach (var project in resultObject.data)
            {
                projects.Add(project);
            }
            return projects;
        }
        #endregion

    }
}

我认为您对产品列表的反序列化有问题。 试一试

var projects=jsoninvert.DeserializeObject(resultString);
而不是

var resultObject = JsonConvert.DeserializeObject(resultString);

List<Models.Project> projects = new List<Models.Project>();

foreach (var project in resultObject.data)
{
    projects.Add(project);
}
var resultObject=JsonConvert.DeserializeObject(resultString);
列表项目=新列表();
foreach(resultObject.data中的var项目)
{
项目。添加(项目);
}

并检查
projects
值是否不为null,反序列化时是否发生错误

您遇到了什么错误?请在问题中包含错误的详细信息,不是它的一部分映像。我收到的错误:System.Core.dll中出现类型为“Microsoft.CSharp.RuntimeBinder.RuntimeBinderException”的异常,但未在用户代码中处理其他信息:与“System.Collections.Generic.List.List(int)”匹配的最佳重载方法有一些无效参数。我将尝试此操作!我想我唯一关心的是,上面我没有描述的是,json中与项目模型对齐的实际“项目”位于json响应中的数据对象下面。请参见此示例响应[链接]
namespace MVCProject1
{
    public class APICalls
    {
        private const string baseUrl = "https://api.10000ft.com/api/v1/{0}?&auth=temp12345=&{1}";

        #region PROJECTS
        public static List<Models.Project> GetAllProjects()
        {
            string requestUrl = string.Format(baseUrl, "projects", "&per_page=200");

            var resultString = RestClient.makeAPICall(requestUrl);
            var resultObject = JsonConvert.DeserializeObject(resultString);

            List<Models.Project> projects = new List<Models.Project>();

            foreach (var project in resultObject.data)
            {
                projects.Add(project);
            }
            return projects;
        }
        #endregion

    }
}
namespace MVCProject1
{
    public static class RestClient
    {
        public static string makeAPICall(string requestUrl)
        {
            var syncClient = new WebClient();
            var content = syncClient.DownloadString(requestUrl);
            Trace.WriteLine(content.ToString());
            return content;
        }
    }

}
var projects = JsonConvert.DeserializeObject<List<Models.Project>>(resultString);
var resultObject = JsonConvert.DeserializeObject(resultString);

List<Models.Project> projects = new List<Models.Project>();

foreach (var project in resultObject.data)
{
    projects.Add(project);
}