I am writing application with asp.net mvc. I have controller with action, which use some ViewModel as parameter. How to send form data with jquery post to that mvc controller.
2 Answers
$.post("Yourcontroller/YourAction", { FirstName : $("#txtFirstName").val(), LastName : $("#txtLastName") } ,function(data){
//do whatever with the response
});
Your ViewModel Property names and Parameter we are passing should be same. Ie : Your view model should have 2 properties called FirstName
and LastName
like his
public class PersonViewModel
{
public string FirstName { set;get;}
public string LastName { set;get;}
// other properties
}
And your Post action method should accept a parameter of type PersonViewModel
[HttpPost]
public ActionResult YourAction(PersonViewModel model)
{
//Now check model.FirstName
}
Alternatively, If your view is strongly typed to the PersonViewModel, you can simply send the serialized form to the action method using jQuery serialize
method
$.post("Yourcontroller/YourAction", $("#formId").serialize() ,function(data){
//do whatever with the response
});
EDIT : As per the comment
Serialize
will take care of the Child property as well. Assume you have a class called Profession like this
public class Profession
{
public string ProfessionName { set; get; }
}
And your PersonViewModel has a property of type Profession
public class PersonViewModel
{
//other properties
public Profession Profession { set; get; }
public PersonViewModel()
{
if (Profession == null)
Profession = new Profession();
}
}
You will get these data in your HttpPost Action method, if you fill that from your view.

- 214,206
- 104
- 411
- 497
-
1What if my model contains some viewModel as property? For example Person has property Profession with other properties? – Radislav May 29 '12 at 17:22
-
@Shyju: I have used your post as reference, but my model validations don't work with jQuery postback. They work fine with the input type=submit, but fail to fire with jQuery ajax postback. Any pointers will be helpful! – user869375 Jul 01 '15 at 09:26
-
How can i combine this with the change even of checkbox like $(document).on('change', '[type=checkbox]', function (data) { – Emil Feb 09 '17 at 12:01
var myData = {
Parameter1: $("#someElementId").val(),
Parameter2: $("#anotherElementId").val(),
ListParameter: { /* Define IEnumerable collections as json array as well */}
// more params here
}
$.ajax({
url: 'someUrl',
type: 'POST',
dataType: "json",
contentType: 'application/json',
data: JSON.stringify(myData)
});
[HttpPost]
public JsonResult Create(CustomViewModel vm)
{
// You can access your ViewModel like a non-ajax call here.
var passedValue = vm.Parameter1;
}
You can also serialize the whole form and pass it to your controller's action method. In you ajax call:
data: $('form').serialize()

- 18,639
- 9
- 97
- 171
-
Great!!!I did not know that it will works. Thanks. I will check and uswer to you. – Radislav May 29 '12 at 16:51