Passing Model from view to controller with Jquery Ajax

后端 未结 2 474
眼角桃花
眼角桃花 2020-12-20 04:25

I\'m try to pass my model values from View to Controller by using ajax JQuery. In my controller that model is shown as null.

Controller alr

相关标签:
2条回答
  • 2020-12-20 04:46
    1. data: '{info:' doesn't match model name: public ActionResult InsertItems(List<Invoice> invoice)
    2. Probably you need default constructor for model for proper deserialization.
    3. Check if your ajax data could be deserialized in List<Invoice>
    0 讨论(0)
  • 2020-12-20 04:51

    You have 4 issues with your code.

    • The first one is in your AJAX call which must look like this:

      $.ajax({
          url: 'Invoice/InsertItems',
          type: 'POST',
          data: JSON.stringify(check),
          contentType: 'application/json; charset=utf-8',
          success: function (data) {
              alert(data);
          }
      });
      
    • The second issue is that you subscribed to the .click event of a submit button without canceling the default action of this button. So if this button is inside a form, when you click it, the browser will POST the form to the server and redirect away to the action of the form leaving no time for your AJAX call to ever execute. So make sure you are canceling the default action of the button:

      $("#btnSubmit").click(function (e) {
          e.preventDefault();
      
          ... your AJAX call comes here
      });
      
    • The third issue is that your Invoice model doesn't have a default (parameterless) constructor meaning that you cannot use it as argument to a controller action without writing a custom model binder because the default model binder wouldn't know how to instantiate it.

    • And the fourth issue is that both the invHeader and InvItmem properties of your Invoice model do not have public setters meaning that the JSON serializer will be unable to set their values. So make sure you have fixed your Invoice model:

      public class Invoice
      {
          public InvoiceHeader InvHeader { get; set; }
          public List<InvoiceItems> InvItmem { get; set; }
      }
      
    0 讨论(0)
提交回复
热议问题