Ram Singh
Ram Singh

Reputation: 6918

How to pass a List of a class into model of ajax post call MVC?

I have a model class like below:

public class clsUser
{
    public string FirstName{ get; set; }
    public String username { get; set; }
    public String password { get; set; }
    public List<ContactNumbers> Cnumbers{ get; set; }
}

Now i want to send ajax request with above model. i have tried to do same by using the following code:

  var dd =
   {

   "FirstName": "ABC",
   "username": "abc123",
   "password": "abc@123",
   "Cnumbers[0].Home":"0987654321",
   "Cnumbers[1].Company":"7654321"
   }

    var objInsertUser= JSON.stringify(dd);
    var URLValue = "http://localhost:47083/api/TestAPI/insertUser";
    $.ajax({
        type: "POST",
        url: URLValue,
        data: objInsertUser,
        contentType: "application/json",
        success: function (data) {
            alert(data);
        }

    });

But this always sending "Cnumbers" as null. i am not getting why..

If i am doing in wrong way could experts tell me the correct way..

thanks in advance.

Upvotes: 0

Views: 1312

Answers (2)

User1000547
User1000547

Reputation: 4301

The problem most likely lies in var objInsertUser= JSON.stringify(dd);. Your object is already JSON, so there's no need to stringfy it. data: dd, should be sufficient. When you Stringify already existing JSON you end up with default values for the parameters, and all non-primitives are null by default.

Also, as noted, your JSON is incorrect. Some people, when confronted with a problem, think "I know, I'll use JSON. Now you have two problems" XD. So, in summary: use correct JSON, and don't JSON.Stringify existing JSON.

Upvotes: 0

Satpal
Satpal

Reputation: 133403

You need to create proper JSON. You need to create an array for Cnumbers

var dd = {
    "FirstName": "ABC",
    "username": "abc123",
    "password": "abc@123",
    "Cnumbers": [{
        "Home": "0987654321"
    }, {
        "Company": "7654321"
    }]
}

Upvotes: 3

Related Questions