使用knockout.js更新Web API记录

问题描述 投票:0回答:1

我在控制器中有这个方法:

// 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 中缺少什么?我无法解决它。

javascript knockout.js put webapi
1个回答
0
投票

从上面的 javscript 中,您应该在

done
中使用不同的变量名称,因为您的操作控制器不返回项目,而您想要获取项目对象。

self.PutBook = function (item, book) {
    ajaxHelper(booksUri + item.Id, 'PUT').done(function (result) {
        self.books.put(item, book);
    });
}
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.