ASP.NET MVC JSON Post an HTML form to view?

I have the following code:

JQuery

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

Controller:

 public ActionResult getPerson(Person person) { return new Json(person); } 

Html Form / 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> 

When I submit an ajax call with the form and set a breakpoint in my action. The person object is not populated with input values, I feel like I'm missing something very simple ... Can you point me to this: |

+4
source share
2 answers

Inputs need a name attribute for proper publication. You must add a name attribute corresponding to the identifier.

 <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> 
+5
source

You should use:

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

EDIT

And as Michael Gattuso remarked, you must fill out the name property.

+2
source

All Articles