如何使用asp.net mvc中的ajax将字段和数组发送到动作控制器? 当我想发送参数到动作控制器我的ajax方法不工作,但我不解决这个问题。 为什么我的ajax方法不执行?
这是我的动作控制器
[HttpPost]
public ActionResult SavePerson(string name, string family, string fatherName, string placeOfBirth,
string gender, string nationalCode, int personTitleId, bool isBimanaMember,string bimanaDesc,string description,
SocialNetwork[] social, Phone[] phone, Email[] email, Address[] address, Site[] site, PersonExpertise[] personExpertise, PersonHonor[] personHonor)
{
//...some code
return Json(result, JsonRequestBehavior.AllowGet);
}
这是我的脚本,此代码尝试使用ajax将参数(字段和数组)发送到动作控制器
$("#save").click(function () {
var socialArr = [];
socialArr.length = 0;
//socialnetwork array
$.each($("#socialNetworkDataTable tbody tr"), function () {
socialArr.push({
Url: $("#url", this).val(),
SocialNetworkTypeId: $("#SocialNetworkTypeId", this).val(),
Description: $("#description", this).val()
});
});
//phone array
var phoneArr = [];`enter code here`
phoneArr.length = 0;
$.each($("#phoneDataTable tbody tr"), function () {
phoneArr.push({
Number: $("#number", this).val(),
PhoneTypeId: $("#PhoneTypeId", this).val(),
Description: $("#description", this).val()
});
});
//email array
var emailArr = [];
emailArr.length = 0;
$.each($("#emailDataTable tbody tr"), function () {
emailArr.push({
Name: $("#name", this).val(),
Description: $("#description", this).val()
});
});
//address array
var addressArr = [];
addressArr.length = 0;
$.each($("#addressDataTable tbody tr"), function () {
addressArr.push({
CountryId: $("#CountryId", this).val(),
StateId: $("#StateId", this).val(),
CityId: $("#CityId", this).val(),
PostalCode: $("#postalCode", this).val(),
PostalBox: $("#postalBox", this).val(),
AddressText: $("#addressText", this).val()
});
});
//site array
var siteArr = [];
siteArr.length = 0;
$.each($("#siteDataTable tbody tr"), function () {
siteArr.push({
Url: $("#url", this).val(),
Description: $("#description", this).val(),
IsPure: $("#isPure", this).val()
});
});
//personExpertise array
var personExpertiseArr = [];
personExpertiseArr.length = 0;
$.each($("#personExpertiseDataTable tbody tr"), function () {
personExpertiseArr.push({
Name: $("#name", this).val(),
Description: $("#description", this).val()
});
});
//personHonor array
var personHonorArr = [];
personHonorArr.length = 0;
$.each($("#personHonorDataTable tbody tr"), function () {
personHonorArr.push({
HonorText: $("#honorText", this).val(),
Description: $("#description", this).val()
});
});
if (socialArr[0].Url == "")
socialArr = null;
if (phoneArr[0].Number == "")
phoneArr = null;
if (emailArr[0].Name == "")
emailArr = null;
if (addressArr[0].CountryId == 0)
addressArr = null;
if (siteArr[0].Url == "")
siteArr = null;
if (personExpertiseArr[0].Name == "")
personExpertiseArr = null;
if (personHonorArr[0].HonorText == "")
personHonorArr = null;
var data = JSON.stringify({
name: $("#Name").val(),
family: $("#Family").val(),
fatherName: $("#FatherName").val(),
placeOfBirth: $("#PlaceOfBirth").val(),
gender: $("#Gender").val(),
nationalCode: $("#NationalCode").val(),
personTitleId: $("#PersonTitleId").val(),
isBimanaMember: $("#IsBimanaMember").val(),
bimanaDesc: $("#BimanaDesc").val(),
description: $("#Description").val(),
social: socialArr,
phone: phoneArr,
email: emailArr,
address: addressArr,
site: siteArr,
personExpertise: personExpertiseArr,
personHonor: personHonorArr
});
$.ajax({
contentType: 'application/json; charset=utf-8',
dataType: 'json',
type: 'POST',
url: "/People/SavePerson",
data: data,
success: function (result) {
Console.log(result);
location.reload();
},
error: function () {
Console.log("Error");
}
});
});
问题:为什么我的ajax方法不会将参数发送到动作控制器以保存到db?