【发布时间】:2021-04-07 02:29:07
【问题描述】:
抱歉,我的问题可能有点含糊。我只是不知道如何正确表达它。
当我尝试从我的数据库中删除时,数据 id 仍然存在,当我向表中添加新数据时,id 继续增加。
我的控制器:
[HttpGet]
public ViewResult Delete(int id)
{
var product = context.Products
.FirstOrDefault(c => c.ProductId == id);
return View(product);
}
[HttpPost]
public RedirectToActionResult Delete(Product product)
{
context.Products.Remove(product);
context.SaveChanges();
return RedirectToAction("List", "Product");
}
我在哪里列出项目的视图:
@foreach (Product product in Model)
{
<tr>
<td>@product.Code</td>
<td>@product.Name</td>
<td>$@product.Price</td>
<td>@product.ReleaseDate</td>
<td>
<a asp-controller="Product" asp-action="Edit"
asp-route-id="@product.ProductId" class="btn btn-primary">Edit</a>
</td>
<td>
<a asp-controller="Product" asp-action="Delete"
asp-route-id="@product.ProductId" class="btn btn-primary">Delete</a>
</td>
</tr>
}
我对删除操作的看法:
<form asp-action="Delete" method="post">
<input type="hidden" asp-for="ProductId" />
<div>
<button type="submit" class="btn btn-primary">Delete</button>
<a asp-controller="Product" asp-action="List" class="btn btn-primary">Cancel</a>
</div>
我在这里做错了什么?或者如果没有任何问题,为什么它的行为方式与 id 字段一样。
【问题讨论】:
-
自动递增的 ID 不会在删除时递减,如果这是您所要求的(不清楚)
-
@Charlieface 哦,我不知道。谢谢你告诉我。
-
首先澄清一下你的问题:假设数据库有3个项目(id为1,2,3),你的意思是删除第三个项目后,再插入一个新的项目,新的id将是 4,而不是 3。这是您的问题吗?如果是这种情况,ID 列可能是标识列,因此它会自动增加数字而不重用该值。为防止这种情况,您应该从 ID 列中删除 Identity。如果您的意思是,删除第三个项目后,被删除的项目仍然呈现在网页中,可能是删除失败或您没有获取最新数据,请检查
List操作方法。 -
@ZhiLv 你首先说的是我的问题,我将如何从 ID 列中删除身份?
-
嗨@TaricDF,请查看我的回复以从 ID 列中删除身份,如果对我的回复有任何疑问,请随时告诉我。
标签: c# asp.net-mvc asp.net-core razor