C# ASP.NET MVC JSON是否将HTML表单发布到视图?

C# ASP.NET MVC JSON是否将HTML表单发布到视图?,c#,jquery,asp.net-mvc,json,C#,Jquery,Asp.net Mvc,Json,我有以下代码: jQuery: $.ajax({ url: '/personcontroller/getperson', cache: false, type: "POST", data: $('#person').serialize(), success: function(data) { alert('yay'); } }); }); 控制器: public ActionResult getPerson(Person pe

我有以下代码:

jQuery:

$.ajax({
    url: '/personcontroller/getperson',
    cache: false,
    type: "POST",
    data: $('#person').serialize(),
    success: function(data) {
      alert('yay');
    }
    });
});
控制器:

public ActionResult getPerson(Person person)
{
    return new Json(person);
}
Html表单/Spark:

<form id="person">
   <input id="person.Id" type="hidden" value="${ViewData.Model.Person.Id}" />
   <input id="person.Name" value="${ViewData.Model.Person.Name}"></input>
   <input id="person.Age" value="${ViewData.Model.Person.Age}"></input>
   <input value="${ViewData.Model.Person.Gender}"></input>
</form>


当我用表单发布ajax调用,并在操作中设置断点时。person对象没有被输入值填充,我觉得我忽略了一些非常简单的东西。。。你能告诉我吗:|

输入需要一个name属性才能正确发布。您应该添加一个与Id匹配的name属性

<form id="person">
   <input id="person.Id" name="person.Id" type="hidden" value="${ViewData.Model.Person.Id}" />
   <input id="person.Name" name="person.Name" value="${ViewData.Model.Person.Name}"></input>
   <input id="person.Age" name="person.Age" value="${ViewData.Model.Person.Age}"></input>
</form>

您应该使用:

public ActionResult getPerson([Bind(Prefix="person")]Person person)
编辑


正如Michael Gattuso所注意到的,您应该填充name属性。

@tvanfosson:您是指id属性。我需要name属性和id属性,还是只需要name:)就可以?我的错--我只是查找了它,因为我不确定,MVC助手确实用下划线替换了id中的点。严格来说,这不是必需的,但它对jQuery很有帮助。您只需要名称,但是如果您想使用javascript访问它,那么使用id就很方便了。