在MVC4中使用Ajax调用Action方法

时间:2013-08-08 10:14:19

标签: javascript ajax jquery asp.net-mvc-4

我的代码中不触发Action方法。你能告诉我错误吗? :)

这是代码..

<script type="text/javascript">

$("#btnSave").click(function () {

    var ContactID = $("#txtContactId").val();
    var Company = $("#txtCompany").val();
    var Status = $("#cmbStatus").val();
    var IsActive = $("#IsActive").is(':checked'); 
    var Comments = $("#txaComments").val();

    var Country = $("#cmbCountry").val();
    var Address1 = $("#txtAddress1").val();
    var Address2 = $("#txtAddress2").val();
    var City = $("#txtCity").val();
    var State = $("#txtState").val();

    var PostalCode = $("#txtPostalCode").val();
    var VatNo = $("#txtVatNo").val();
    var RegNo = $("#txtRegNo").val();
    var Phone = $("#txtPhone").val();
    var Email = $("#txtEmail").val();

    $.ajax({
        url: "Customer/InsertCustomer",
        data: {
            'ContactID': ContactID,
            'Company': Company,
            'Status': Status,
            'IsActive': IsActive,
            'Comments': Comments,
            'Country': Country,
            'Address1': Address1,
            'Address2': Address2,
            'City': City,
            'State': State,
            'PostalCode': PostalCode,
            'VatNo': VatNo,
            'RegNo': RegNo,
            'Phone': Phone,
            'Email': Email
        },
        dataType: "json",
        type: 'POST',
        success: function (data) {
            alert("Successfully Inserted!");
        },
        error: function () {
            alert("error");
        }
    });
});

这是Action方法..

        public ActionResult InsertCustomer(string ContactID, string Company, int Status, bool IsActive, string Comments, int Country, string Address1, string Address2, string City, string State, string PostalCode, string VatNo, string RegNo, string Phone, string Email)
    {
        bool process = false;

        return Json(process, JsonRequestBehavior.AllowGet);
    }

2 个答案:

答案 0 :(得分:2)

您需要设置[HttpPost]属性:

[HttpPost]
public ActionResult InsertCustomer(string ContactID, string Company, int Status, bool IsActive, string Comments, int Country, string Address1, string Address2, string City, string State, string PostalCode, string VatNo, string RegNo, string Phone, string Email)
    {
        bool process = false;

        return Json(process, JsonRequestBehavior.AllowGet);
    }

答案 1 :(得分:1)

这可能是错误网址的问题。使用Url.Action()帮助:

$.ajax({
        url: "@Url.Action("InsertCustomer", "Customer")",

您也可以查看浏览器控制台以获取错误详情。

顺便说一句,如果您想从表单中发送值,可以使用jquery .serializeArray()方法:

$.ajax({
            url: "@Url.Action("InsertCustomer", "Customer")",
            data: $('form').serializeArray()