Seems model propeprty name and javascript object property name are not equal. So it is not deserializing correctly and secodly you need to use Deserialize() to parse it. Try with below code.
Model class:
public class user
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
}
Javascript code:
<script src="~/Scripts/jquery-1.8.2.min.js"></script>
<script>
var Objarray = [];
var User = new Object();
User.FirstName = "Manas1";
User.LastName = "Moha1";
User.Email = "email1";
Objarray.push(User);
var User2 = new Object();
User2.FirstName = "Manas2";
User2.LastName = "Moha2";
User2.Email = "email2";
Objarray.push(User2);
var jsonObj = { userList: Objarray };
alert(JSON.stringify(jsonObj));
$.ajax({
type: "POST",
url: "/Home/SaveDetails",
data: JSON.stringify(jsonObj),
contentType: "application/json",
datatype: "json",
success: function (costs) {
alert("success");
}
});
</script>
Controller code:
[HttpPost]
public ActionResult SaveDetails(List<user> userList)
{
foreach(user tempObj in userList)
{
string FirstName = tempObj.FirstName;
}
return Json("Success");
}