如何在 ASP.NET MVC3 中使用“FormCollection”接收关联数组数据

Posted

技术标签:

【中文标题】如何在 ASP.NET MVC3 中使用“FormCollection”接收关联数组数据【英文标题】:How to receive associative array data with 'FormCollection' in ASP.NET MVC3 【发布时间】:2016-01-15 09:05:43 【问题描述】:

我有以下数据可以向控制器操作发送 ajax 调用:

var data = 
    "PersonalInfo": [
              
            "FirstName": "Leonel",
            "LastName": "Messi"     
        ,
        
            "FirstName": "Cristiano",
            "LastName": "Ronaldo" 
        
    ]
;

Ajax调用方法:

$.ajax(
    url: "/Home/Create",
    type: "POST",
    dataType: "json",
    data: (JSON.parse(data)).PersonalInfo,
    success: function (response)                         
);

控制器动作:

public ActionResult Create(FormCollection formCollection)

    base.Create(formCollection);

在服务器端,我需要FormCollection 的数组/列表,例如:

formCollection[0] =       
    "FirstName": "Leonel",
    "LastName": "Messi"     


formCollection[1] =       
    "FirstName": "Cristiano",
    "LastName": "Ronaldo"      

或者类似下面的代码,这样我就可以多次调用base.Create(formCollection) 方法来获取多个个人信息。

public ActionResult Create(List<FormCollection> formCollection)



但这是不可能的,这种情况下有什么替代方案吗?

【问题讨论】:

你到底为什么要使用FormCollection?使用具有 FirstNameLastName 属性的模型并绑定到模型的集合 - public ActionResult Create(List&lt;Person&gt; model) 【参考方案1】:

一定要用formcollection吗?

Visual Studio 有一个特殊的菜单选项选择,可以使用 JSON 对象并输出模型绑定器映射到的类。复制您预期的 JSON 结果(数据对象)。

转到一个类文件,然后转到 Visual Studio 的菜单栏,Edit => Paste Special => Paste JSON as classes

使用生成的类作为 api 控制器操作调用的参数,它们应该映射。

【讨论】:

我需要调用base.Create(formCollection) 方法。如果我从 Json 对象创建类,则无法调用 base.Create(formCollection)。因为base.Create(className) 显示错误消息。谢谢您的回复.......

以上是关于如何在 ASP.NET MVC3 中使用“FormCollection”接收关联数组数据的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 ASP.NET MVC3 编辑嵌套模型

如果asp.net mvc3中的大小超过4mb,则无法上传文件[重复]

如何使用代码优先实体框架在 ASP.Net MVC3 中重新加载多对多导航属性

如何在 asp.net mvc3 中使用 Kendo UI Editor 和剃须刀?

如何使用 MVC3 ASP.NET 4.5 和 EF6 基于实体属性注释对 TextBoxFor 进行舍入

如何在 ASP.NET MVC3 中通过 HTTPS 提供静态文件(在 ~/Content 中)