【发布时间】:2019-01-03 23:37:27
【问题描述】:
大家晚上好!我一直在学习如何在 .NET 中编程的教程。本教程介绍了如何添加项目,但不包括删除。这是我的代码:
服务层
public async Task Delete(int locationId)
{
var location = _context.Locations.Where(l => l.Id == locationId);
_context.Remove(location);
await _context.SaveChangesAsync();
}
控制器
public IActionResult Delete(int id)
{
_locationService.Delete(id);
return RedirectToAction("Index", "Location");
}
查看
<table class="table table-hover" id="locationIndexTable">
<thead>
<tr>
<th>Name</th>
<th>Address</th>
<th>Phone Number</th>
<th>Delete Location</th>
</tr>
</thead>
<tbody>
@foreach (var location in Model.LocationList)
{
<tr>
<td>
<a asp-controller="Location" asp-action="Detail" asp-route-id="@location.Id">
@location.Name
</a>
</td>
<td>
@location.Address
</td>
<td>
@location.PhoneNumber
</td>
<td>
<a asp-controller="Location" asp-action="Delete" asp-route-id="@location.Id" class="btn btn-sm btn-primary">TODO Delete</a>
</td>
</tr>
}
</tbody>
我的按钮点击并重定向回我的位置索引视图。但是,它不会按预期从数据库中删除该位置。我知道问题一定出在控制器上。
如果这对将来的某人有所帮助,我将代码更改为使其正常工作: 服务层
public async Task Delete(int locationId)
{
var location = _context.Locations.SingleOrDefault(l => l.Id == locationId);
_context.Remove(location);
await _context.SaveChangesAsync();
}
控制器
public async Task <IActionResult> Delete(int id)
{
await _locationService.Delete(id);
return RedirectToAction("Index", "Location");
}
【问题讨论】:
标签: entity-framework model-view-controller asp.net-core