使用ajax在asp.net mvc中发送fileds和Array来执行操作

时间:2018-05-21 12:13:45

标签: jquery ajax

如何使用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?

0 个答案:

没有答案