此资源不支持“multipart / form-data”

时间:2017-07-13 06:24:23

标签: c# asp.net asp.net-mvc asp.net-mvc-4 asp.net-web-api

我有WEbAPI2后端。

我尝试从邮递员发送表单数据

enter image description here

但是得到这个错误

  

“没有MediaTypeFormatter可用于从媒体类型为'multipart / form-data'的内容中读取'StartWorkingDay'类型的对象。”,

这是我的控制器的代码

// POST: api/StartWorkingDays
[ResponseType(typeof(StartWorkingDay))]
public IHttpActionResult PostStartWorkingDay(StartWorkingDay startWorkingDay)
{
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }

    db.StartWorkingDays.Add(startWorkingDay);
    db.SaveChanges();

    return CreatedAtRoute("DefaultApi", new { id = startWorkingDay.Id }, startWorkingDay);
}

当我通过原始数据发送时,一切正常

enter image description here

我如何才能收到multipart/form-data

2 个答案:

答案 0 :(得分:2)

取自MSDN

application/x-www-form-urlencoded

  

表单数据被编码为名称/值对,类似于URI查询字符串。这是POST的默认格式。

multipart/form-data

  

表单数据被编码为多部分MIME消息。如果要将文件上载到服务器,请使用此格式。

使用enctype x-www-form-urlencoded,而不是postman中的form-data

答案 1 :(得分:1)

在邮递员中选择表格数据。添加键“startWorkingDay”,并在必需的函数中反序列化请求参数。而且,你已经完成了。

Postman Snap

<强>代码:

    // POST: api/StartWorkingDays
        [System.Web.Http.AcceptVerbs("POST")]
        [System.Web.Http.HttpPost]
        [ResponseType(typeof(StartWorkingDay))]
        public IHttpActionResult PostStartWorkingDay()
        {
            var startWorkingDay = JsonConvert.DeserializeObject<StartWorkingDay>(HttpContext.Current.Request.Form["startWorkingDay"]);
            //if (!ModelState.IsValid)
            //{
            //    return BadRequest(ModelState);
            //}

            db.StartWorkingDays.Add(startWorkingDay);
            db.SaveChanges();

            return CreatedAtRoute("DefaultApi", new { id = startWorkingDay.Id }, startWorkingDay);
        }


  [1]: https://i.stack.imgur.com/AF5YH.png