用jQuery序列化MVC表单

Serializing MVC form with jQuery

本文关键字:表单 MVC 序列化 jQuery      更新时间:2023-09-26

是否可以用jQuery序列化MVC表单,就像MVC引擎一样?准确地说,通过足够聪明地将输入数据"组装"到Model对象中?

例如,假设这是我的简单模型:
public List<Person> People {get;set;}

这是我的表单:

<form>
    <input name="People[0].Id" value="9B776FB9-28B9-4364-A320-22E00A3E05D4" type="hidden">
    <input name="People[0].Name" value="Jon Doe" type="hidden">
</form>

预期的结果:

People: [
    {
        Id: "9B776FB9-28B9-4364-A320-22E00A3E05D4",
        Name: "Jon Doe"
    }
]

我尝试使用$("form").serialize(),但这是返回的Json:

[
    {
        name: "People[0].Id",
        value: "9B776FB9-28B9-4364-A320-22E00A3E05D4"
    },
    {
        name: "People[0].Name",
        value: "Jon Doe"
    }
]

正如你所看到的,它所做的只是将每个输入作为一个单独的对象返回,而不是"理解"两个输入分别代表同一个对象的一个属性。

我有什么办法可以做到这一点吗?

JsFiddle: https://jsfiddle.net/abu6mh1z/

我已经在我的项目中使用Serialize表单对象。

您必须编写以下代码来序列化表单对象。

var formId = '#form2';
var SData = $(formId).serialize();

你必须在视图索引中定义表单。

<form id="form2">

如果你使用Post方法,那么你需要在Action中定义[HttpPost]。


您在索引中使用的模型,您需要在Action中用作参数的相同模型。请检查以上标准,你一定能够序列化表单对象,如果你失败了,告诉我我们会解决你的问题。

谢谢。