J’écris une application avec asp.net mvc. J’ai contrôleur avec action, qui utilise certains ViewModel comme paramètre. Comment envoyer des données de formulaire avec jquery post à ce contrôleur MVC.
$.post("Yourcontroller/YourAction", { FirstName : $("#txtFirstName").val(), LastName : $("#txtLastName") } ,function(data){ //do whatever with the response });
Les noms de propriété ViewModel et le paramètre que nous transmettons doivent être identiques. C’est-à-dire que votre modèle de vue doit avoir 2 propriétés appelées FirstName
et LastName
comme son
public class PersonViewModel { public ssortingng FirstName { set;get;} public ssortingng LastName { set;get;} // other properties }
Et votre méthode d’action Post doit accepter un paramètre de type PersonViewModel
[HttpPost] public ActionResult YourAction(PersonViewModel model) { //Now check model.FirstName }
Sinon, si votre vue est fortement typée dans PersonViewModel, vous pouvez simplement envoyer le formulaire sérialisé à la méthode d’action à l’aide de la méthode jQuery serialize
$.post("Yourcontroller/YourAction", $("#formId").serialize() ,function(data){ //do whatever with the response });
EDIT: Selon le commentaire
Serialize
prendra également en charge la propriété Child. Supposons que vous ayez une classe appelée Profession comme celle-ci
public class Profession { public ssortingng ProfessionName { set; get; } }
Et votre PersonViewModel a une propriété de type Profession
public class PersonViewModel { //other properties public Profession Profession { set; get; } public PersonViewModel() { if (Profession == null) Profession = new Profession(); } }
Vous obtiendrez ces données dans votre méthode Action HttpPost, si vous les remplissez à partir de votre vue.
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.ssortingngify(myData) }); [HttpPost] public JsonResult Create(CustomViewModel vm) { // You can access your ViewModel like a non-ajax call here. var passedValue = vm.Parameter1; }
Vous pouvez également sérialiser le formulaire complet et le transmettre à la méthode d’action de votre contrôleur. En vous appelez ajax:
data: $('form').serialize()