【发布时间】:2020-06-18 21:00:53
【问题描述】:
我有以下 Web API 控制器并且运行良好,并且能够使用 API 更新记录,但我想创建 UI 控制器以使用 asp 视图页面将更改发布到数据库,我可以从 API 发布更改但我需要使用 Views 更新
API 控制器:
[HttpPut("Products/{id}")]
public async Task<IActionResult> UpdateProduct(int id, ProductDTO updatedProduct)
{
updatedProduct = await ProductService.UpdateProductAsync(id, updatedProduct);
return Ok(updatedProduct);
}
用于编辑/更新产品的 UI 控制器:
public async Task<IActionResult> Edit(int? id)
{
if (id == null)
{
return NotFound();
}
var ProductList = (await ProductService.GetProducts()).ToList();
var Product = ProductList.FirstOrDefault(a => a.ID == id);
if (Product == null)
{
return NotFound();
}
return View(Product);
}
[HttpPut("{id}")]
public async Task<IActionResult> UpdateProduct([FromRoute]int id, [FromBody]ProductDTO updatedProduct)
{
updatedProduct = await ProductService.UpdateProductAsync(id, updatedProduct);
return Ok(updatedProduct);
}
IProductService:
public interface IProductService
{
Task<ProductDTO> UpdateProductAsync(int id, ProductDTO updatedProduct);
}
编辑视图:
<form asp-action="Edit" asp-controller="Product" class="form-horizontal">
<input type="hidden" asp-for="Id" value="@Model.Id" class="form-control" />
<input type="text" asp-for="Code" value="@Model.Code" class="form-control" />
<button class="btn btn-success Product-edit-button" role="button">Save</button>
</form>
如何将更改发布到数据库
【问题讨论】:
-
数据层中的上下文在哪里?
-
@StuiterSlurf 我在数据层有一个 PDMcontext 很好,我的产品是
public virtual DbSet<Product> Product { get; set; } -
那么在那个数据层你需要调用上下文的savechangesasync方法来保存对数据库的更改吗?
-
public interface IProductService { Task<ProductDTO> UpdateProductAsync(int id, ProductDTO updatedProduct); }我有这个问题
标签: asp.net-mvc asp.net-core asp.net-apicontroller