【发布时间】:2021-02-12 02:43:57
【问题描述】:
我有一份酿酒商清单,每个酿酒商都有一份啤酒清单。在我的练习中,我需要从特定的 Brewer 中删除 Beer。
我看到了 Brewers 列表,我点击了详细信息,然后我看到了这个 brewer 拥有的所有 Beers 的名称。
我了解如何删除 Brewer,但不知道如何从该 Brewer 中删除啤酒。我绝对需要啤酒厂的身份证和啤酒的身份证。
<td>
<a asp-controller="Brewer" asp-action="BeerDelete" asp-route-id="@item.BeerId">Delete</a>
</td>
这里我有一个啤酒 id,但我如何设法再次获得 Brewer id?
这是删除 Brewer 的代码
[HttpPost, ActionName("Delete")]
public IActionResult DeleteConfirmed(int id)
{
Brewer brewer = null;
try
{
brewer = _brewerRepository.GetBy(id);
_brewerRepository.Delete(brewer);
_brewerRepository.SaveChanges();
TempData["message"] = $"You successfully deleted brewer { brewer.Name}.";
}
catch
{
TempData["error"] = $"Sorry, something went wrong, brewer { brewer?.Name} was not deleted…";
}
return RedirectToAction(nameof(Index));
}
我可能需要在某处保存 brewer 的 id 吗? 或者当我在他的页面上查看啤酒列表时,有可能获得啤酒商的 ID?
删除 Brewer 网址:…/Brewer/Delete/4
删除啤酒 网址:.../Brewer/Beer/Delete/{id} ???? 希望我描述得足够好..
我试着这样做:
public IActionResult BeerDelete(int id)
{
ViewData[nameof(Beer.Name)] = _brewerRepository.GetBy(id).Beers.FirstOrDefault(e => e.BeerId == id).Name;
return View();
}
亲切的问候,伊利亚
【问题讨论】:
-
最好创建一个视图模型而不是 ViewData。然后您可以在您的视图中创建一个表单并发布该模型。在模型中,您可以添加一个 brewerId 和一个 beerId 也不清楚您的数据库是如何构建的。您是否使用实体框架并且是代码优先?这完全取决于数据库中两者之间的关系以及如何构建。
-
您好,谢谢回复,是实体框架,代码优先,Brewer有0个或多个Beers,Beer正好有一个Brewer。
-
那么啤酒中有没有 brewerId ?那将是可取的。你可以这样做:_beerRepository.Where(b => b.BrewerId == brewerId && b.Id == Id).FirstOrDefault();
-
我不能使用 _beerRepository.. 我只有私有的只读 IBrewerRepository _brewerRepository;私有只读 ILocationRepository _locationRepository;公共 BrewerController(IBrewerRepository brewerRepository, ILocationRepository locationRepository) { _brewerRepository = brewerRepository; _locationRepository = locationRepository; } 在我的练习中
标签: c# asp.net-mvc razor model-binding