ajax调用带有文件和参数的web api不会映射到web api控制器方法的参数

时间:2017-03-16 05:32:44

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

我正在尝试通过使用formData的ajax调用向Web api发送文件和一些参数值。这是我的ajax电话。

    var dataToPost = new FormData();
    dataToPost.append("file", file);
    dataToPost.append("placeId", "1");

    $.ajax({
        type: "POST",
        url: "/api/Post/SharePost",
        processData: false,
        contentType: false,
        dataType: "json",
        data: dataToPost,
        success: function () { },
        error: function () {}
    });

这是我的web api控制器

    [HttpPost]
    public IHttpActionResult PostSharePost(HttpPostedFileBase file, string placeId)
    {
        //var file2 = HttpContext.Current.Request.Files["file"];
        //var placEId = HttpContext.Current.Request["placeId"];

        return null;
    }

当我执行ajax时,我可以从Request.Files [" file"]和Request [" placeId"]中检索数据。但我想将数据映射到方法的参数。但是当我向" PostSharePost"添加参数时方法,ajax调用返回404错误。如何将数据映射到web api控制器方法中的参数?

因为当我使用mvc控制器执行相同的操作时,它工作正常,例如当我使用相同的设置向mvc控制器发送ajax调用时,如下所示

    [HttpPost]
    public ActionResult SharePost(HttpPostedFileBase file, string placeId)
    {
        //here the data maps to file and placeId
        return null;
    }

为什么ajax调用mvc控制器和web api控制器的行为有所不同,如何将数据映射到web api控制器的参数?

谢谢你们;

0 个答案:

没有答案