我在控制器中有这个方法:
// PUT: api/Books/5
[ResponseType(typeof(void))]
public async Task<IHttpActionResult> PutBook(int id, Book book)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
if (id != book.Id)
{
return BadRequest();
}
db.Entry(book).State = EntityState.Modified;
try
{
await db.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!BookExists(id))
{
return NotFound();
}
else
{
throw;
}
}
return StatusCode(HttpStatusCode.NoContent);
}
我在 Knockout.js 中有这个方法
self.PutBook = function (item, book) {
ajaxHelper(booksUri + item.Id, 'PUT').done(function (item) {
self.books.put(item, book);
});
}
我想用前端输入字段中输入的值更新记录。 knockout.js 中缺少什么?我无法解决它。
从上面的 javscript 中,您应该在
done
中使用不同的变量名称,因为您的操作控制器不返回项目,而您想要获取项目对象。
self.PutBook = function (item, book) {
ajaxHelper(booksUri + item.Id, 'PUT').done(function (result) {
self.books.put(item, book);
});
}