我有WEbAPI2后端。
我尝试从邮递员发送表单数据
但是得到这个错误
“没有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);
}
当我通过原始数据发送时,一切正常
我如何才能收到multipart/form-data
?
答案 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”,并在必需的函数中反序列化请求参数。而且,你已经完成了。
<强>代码:强>
// 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