gpt4 book ai didi

c# - 在 web api 中编辑方法

转载 作者:行者123 更新时间:2023-11-30 16:00:52 26 4
gpt4 key购买 nike

我有以下类(class),它使用 Entity Framework 来操作它的任务

存储库类

public class LibraryRepository
{
LibraryContext context = new LibraryContext();

public void EditBook(Book book)
{
context.Entry(book).State = System.Data.Entity.EntityState.Modified;
}
}

所以我尝试在我的 Web API 中使用这个 EditBook 方法

Web API Controller 类

public class BooksWebAPIController : ApiController
{
private LibraryRepository db = new LibraryRepository();

[ResponseType(typeof(void))]
public IHttpActionResult PutBook(int id, Book book)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}

if (id != book.Book_Id)
{
return BadRequest();
}

db.EditBook(book);

return StatusCode(HttpStatusCode.NoContent);
}
}

我正在尝试在 MVC 项目中使用上面的 Web API EditBook URL(作为我的客户端层)所以我在 MVC 项目的 Model 文件夹中创建了一个客户端类,如下所示

图书馆客户端类

public class LibraryClient
{
private string BOOK_URL = "http://localhost:13793/api/Books";

public bool Edit(Book book)
{
try
{
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(BOOK_URL);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = client.PutAsJsonAsync("Books/" + book.Book_Id, book).Result;

return response.IsSuccessStatusCode;
}
catch
{
return false;
}

}
}

然后在 MVC 项目的 Controller 文件夹中,我创建了以下类和 Controller 来与前端交互

BooksController 类

public class BooksController : Controller
{
[HttpGet]
public ActionResult Edit(int id)
{
LibraryClient lc = new LibraryClient();
Book book = new Book();
book = lc.GetBook(id);

return View("Edit", book);
}

[HttpPost]
public ActionResult Edit(Book book)
{
LibraryClient pc = new LibraryClient();
pc.Edit(book);
return RedirectToAction("BookswithAuthers", "BookWithAuther");
}
}

但是这里的编译没有任何错误,当我选择一本书来编辑它获取正确的书时,但是一旦我对它进行更改并点击保存它的不保存更新的详细信息,这是怎么回事我的方法有误。

ViewCreateDelete 方法以这种方式创建,效果很好。唯一的问题是这个 Edit 方法

最佳答案

您是否在任何地方调用 context.SaveChanges()?如果不是,则在 context.Entry(book).State = System.Data.Entity.EntityState.Modified; 之后调用它。

关于c# - 在 web api 中编辑方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39550226/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com