我无法理解为什么我的WebApi在发布时返回成功(200),但在我放置时没有返回任何内容。两者都成功更新了数据库。
我已经为这两种方法附加了我的代码。 谢谢 保罗
// PUT: api/items/5
[Route("api/items/{id:int}")]
[ResponseType(typeof(void))]
public async Task<IHttpActionResult> PutItem([FromBody] Item[] item, string updateitems)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
foreach (Item i in item)
{
if (updateitems.IndexOf(i.ItemId.ToString()) > 0)
{
db.Entry(i).State = EntityState.Modified;
}
}
await db.SaveChangesAsync();
var iStatus = StatusCode(HttpStatusCode.OK);
return iStatus;
}
// POST: api/items
[Route("api/items")]
[ResponseType(typeof(Item))]
public async Task<IHttpActionResult> PostItem([FromBody] Item[] item)
{
int itemCount = 0;
string edititems = "";
IHttpActionResult iStatus;
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
foreach (Item i in item)
{
if (!ItemExists(i.SurveyId, i.LineId))
{
db.Items.Add(i);
}
else
{
var id = FindItemId(i.SurveyId, i.LineId);
edititems = edititems + ',' + id.ToString();
i.ItemId = id;
}
itemCount ++;
}
await db.SaveChangesAsync();
if (edititems.Length > 0)
{
IHttpActionResult result = PutItem(item, edititems).Result;
}
iStatus = StatusCode(HttpStatusCode.OK);
return iStatus;
}
答案 0 :(得分:0)
你的代码看起来很好,我看到的唯一区别是在Put的ResponseType属性中,你有:[ResponseType(typeof(void))]
更改为:[ResponseType(typeof(item))]