405将数据从Jquery Ajax发送到ASP.NET控制器时出错

时间:2015-09-01 14:54:44

标签: jquery asp.net ajax

我有一个AJAX调用,我传递了这些数据:

data: JSON.stringify({ data: holder, customer: customerID }),

持有人是array,看起来像这样 [1, 2, 3, 4]

和customerID是int

3346759

我试图将它传递给这个ASP.NET控制器:

public List<CustomerQuestionsClass>
updateCustomersQuestions(List<CustomerQuestionsClass> items, int CustomerID)

这是我的CustomerQuestionsClass类:

public class CustomerQuestionsClass
{
    public int CustomerID { get; set; }
    public int QuestionID { get; set; }
}

当我尝试传递此数据时,出现405错误。当我从我的ASP.NET控制器和ajax调用中取出所有的customerID内容时,ajax调用有效,所以我必须错误地传递CustomerID,我做错了什么?

1 个答案:

答案 0 :(得分:0)

您发布到控制器的数据与其输入参数不匹配。 根据您的方法签名,它需要一个名为items的集合和一个名为CustomerID的int,因此为了让您的ajax调用工作,您需要更改JS对象的键的名称匹配您的操作方法参数。

查看:

@model MVCTest.Models.CustomerQuestionsClass


<button>Send</button>

@section scripts{   
   <script type="text/javascript">
   $(function () {

        $("button").on("click", function () {

            var holder = [1, 2, 3, 4];
            var id = 3346759;

            var data = { items: holder, CustomerID: id};

            $.ajax({

                url: "@Url.Action("updateCustomersQuestions","Controller")",
                type: "POST",
                data: JSON.stringify(data),
                contentType: "application/json"
            })
            .done(function (data) {

            });
        });            
    });
</script>   
}

控制器操作:

[HttpPost]
public List<CustomerQuestionsClass> updateCustomersQuestions(List<CustomerQuestionsClass> items, int CustomerID)
{                         
    return new List<CustomerQuestionsClass>();
}