如何使用ajax调用在Web API中传递带对象的附加参数?

时间:2015-06-30 14:02:15

标签: jquery asp.net-mvc asp.net-web-api

我正在使用asp.net web api。我正在使用MVC。我试着打电话给ajax电话,但总是给我404错误。

我尝试没有三个参数" Hash"," AccessKey"," Path" - 然后它允许我调用http://www.xxx.xys/rest/createnew的方法并按照我的意愿给出响应。

但是当我添加这三个(" Hash"," AccessKey"," Path")参数时,它总是给我错误找不到(404)错误。

这里没有因跨域而导致的错误,因为它运行良好,没有三个参数。 我想传递三个参数作为参数而不是标题requset中的对象CreateParameter.not的属性。只是我想在参数中传递它们。

 function CreateTicket() {

        $.ajax({
            url: 'http://www.xxx.xys/rest/createnew',

            type: 'POST',
            dataType: 'json',
            data: {
                MerchantID: $("#txtMerchantID").val(), TicketCategoryID: $("#txtTicketCategoryID").val(), GroupID: $("#txtGroupID").val(), TicketSubCategoryID: $("#txtSubCategoryID").val(), TicketPriorityID: $("#txtTicketPriorityID").val(), Summary: '' + $("#txtSubject").val() + '',
Hash: "EI2nkSoqRN5cBO/ctXF90tl+c0UTW/euI8NZwsG8ZBE=", AccessKey: "d357cf6e-bb14-452e-8044-68c699503c2b", Path: "api/TicketAPIs/GetTicketsByFilter"
            },
            crossDomain: true,
            ContentType: "application/json; charset=utf-8",
            success: function (data) {
                if (data.IsSuccess) {

                    alert('created');
                }
                else {
                    alert('error');
                }

            },
            error: function (data) {
                    alert('error');
            }
        });
    }

 [HttpPost]
    public CreateTicketResult createnew([FromBody]CreateParameter ObjParameter,string Hash, string AccessKey, string Path)
    {
        //code here
}
and I have also tried with below but not working.

[HttpPost]
    public CreateTicketResult createnew(CreateParameter ObjParameter,string Hash, string AccessKey, string Path)
    {
        //code here
}


 public class CreateParameter
    {

        public int MerchantID { get; set; }
        public short TicketCategoryID { get; set; }
        public short GroupID { get; set; }
        public short TicketSubCategoryID { get; set; }
        public short TicketPriorityID { get; set; }
        public string Summary { get; set; }
    }

所以我想通过 MerchantID,TicketCategoryID,GroupID,TicketSubCategoryID,TicketPriorityID,Summary作为CreateParameter对象的属性以及这三个(" Hash"," AccessKey"," Path")分开参数 如函数createnew的签名所示。但无法做到这一点。

1 个答案:

答案 0 :(得分:1)

编辑回答 在控制器中试试这个:

public CreateTicketResult createnew(string MerchantID, string TicketCategoryID, string GroupID, string TicketSubCategoryID, string TicketPriorityID, string Summary,string Hash, string AccessKey, string Path)
{
   CreateParameter ObjParameter = new CreateParameter();
        ObjParameter.MerchantID = MerchantID;
        ObjParameter.TicketCategoryID = TicketCategoryID;
        ObjParameter.GroupID = GroupID;
        ObjParameter.TicketSubCategoryID = TicketSubCategoryID;
        ObjParameter.TicketPriorityID = TicketPriorityID;
        ObjParameter.Summary = Summary;


//code..........
//code.......
}

否则,使用make一个json对象并在请求中传递它,这样你就可以在控制器中解码,但上面的方法要容易得多。这完全取决于您的偏好。