C# ASP.NETMVC:如何从列表中删除也在列表中的元素

C# ASP.NETMVC:如何从列表中删除也在列表中的元素,c#,asp.net-mvc,razor,model-binding,C#,Asp.net Mvc,Razor,Model Binding,我有一份酿酒商的名单,每个酿酒商都有一份啤酒的名单。在我的练习中,我需要删除特定酿酒商的啤酒 我看到了酿酒商的名单,我点击了详细信息,然后我看到了这家酿酒商拥有的所有啤酒的名称 我知道如何删除啤酒厂,但不知道如何从该啤酒厂删除啤酒。我绝对需要啤酒商和啤酒商的身份证 <td> <a asp-controller="Brewer" asp-action="BeerDelete" asp-route-id="@item.Be

我有一份酿酒商的名单,每个酿酒商都有一份啤酒的名单。在我的练习中,我需要删除特定酿酒商的啤酒

我看到了酿酒商的名单,我点击了详细信息,然后我看到了这家酿酒商拥有的所有啤酒的名称

我知道如何删除啤酒厂,但不知道如何从该啤酒厂删除啤酒。我绝对需要啤酒商和啤酒商的身份证

 <td>
    <a asp-controller="Brewer" asp-action="BeerDelete" asp-route-id="@item.BeerId">Delete</a>
</td>
我需要保存布鲁尔的身份证吗? 或者当我在他的页面上查看啤酒列表时,我有可能得到布鲁尔的身份证

删除啤酒厂 URL:…/Brewer/Delete/4

删除啤酒 URL:…/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();
    }


亲爱的,伊利亚这是从你的啤酒厂删除啤酒的众多方法之一。我假设你的啤酒上有一个给酿酒商的
外国钥匙。如果我真的知道
Brewer
Beer
类是如何设置的,我可能会更精确

看法


这是实现从啤酒厂中删除啤酒的多种方法之一。我假设你的啤酒上有一个给酿酒商的
外国钥匙。如果我真的知道
Brewer
Beer
类是如何设置的,我可能会更精确

看法


最好创建viewmodel而不是ViewData。然后,您可以在视图中创建一个表单并发布该模型。在该模型中,您可以添加一个brewerId和一个beerId,但不清楚数据库是如何构建的。您是否使用实体框架,是否先编写代码?这完全取决于数据库中两者之间的关系以及如何构建。您好,感谢您的回复,这是实体框架,代码优先,Brewer有0个或多个啤酒,Beer只有一个啤酒商。那么Beer中是否有brewerId?那是明智的。您可以这样做:_beerRepository.Where(b=>b.BrewerId==BrewerId&&b.Id==Id).FirstOrDefault();我不能用否定词。。我只有私有的只读易趣存储库;专用只读ILocationRepository\u locationRepository;public BrewerController(IBrewerRepository brewerRepository,ILocationRepository locationRepository){{{u brewerRepository=brewerRepository;{u locationRepository=locationRepository;}在我的练习中,最好创建一个viewmodel而不是ViewData。然后,您可以在视图中创建一个表单并发布该模型。在该模型中,您可以添加一个brewerId和一个beerId,但不清楚数据库是如何构建的。您是否使用实体框架,是否先编写代码?这完全取决于数据库中两者之间的关系以及如何构建。您好,感谢您的回复,这是实体框架,代码优先,Brewer有0个或多个啤酒,Beer只有一个啤酒商。那么Beer中是否有brewerId?那是明智的。您可以这样做:_beerRepository.Where(b=>b.BrewerId==BrewerId&&b.Id==Id).FirstOrDefault();我不能用否定词。。我只有私有的只读易趣存储库;专用只读ILocationRepository\u locationRepository;public BrewerController(IBrewerRepository brewerRepository,ILocationRepository locationRepository){{{u brewerRepository=brewerRepository;{u locationRepository=locationRepository;}在我的练习中,在你的帮助下我几乎接近成功;但是一类啤酒对啤酒商一无所知,所以我没有属性brewerId,一类啤酒商得到了啤酒列表。我这里有Brewer and Beer的模型图,我认为@patrick mcvay帮了你很大的忙,你应该完成你的练习,否则我们将代替你进行练习。您需要包含brewerId,并且在导航到beer页面之前,您位于brewer页面的右侧。请检查
阴影属性
。由于
Beer
没有用于
Brewer
的外键或
Brewer
的导航属性,如果使用代码优先的方法,
实体框架
将为您创建一个
影子属性
。另外,我会在你的
DBContext
课程中设置一个
DBSet
;但是一类啤酒对啤酒商一无所知,所以我没有属性brewerId,一类啤酒商得到了啤酒列表。我这里有Brewer and Beer的模型图,我认为@patrick mcvay帮了你很大的忙,你应该完成你的练习,否则我们将代替你进行练习。您需要包含brewerId,并且在导航到beer页面之前,您位于brewer页面的右侧。请检查
阴影属性
。由于
Beer
没有用于
Brewer
的外键或
Brewer
的导航属性,如果使用代码优先的方法,
实体框架
将为您创建一个
影子属性
。另外,我会在
DBContext
类中设置一个
DBSet
public IActionResult BeerDelete(int id)
    {
        ViewData[nameof(Beer.Name)] = _brewerRepository.GetBy(id).Beers.FirstOrDefault(e => e.BeerId == id).Name;
        return View();
    }
 <td>
    <a asp-controller="Brewer" asp-action="BeerDelete" asp-route-id="@item.BeerId" asp-route-brewerId="@item.BrewerId">Delete</a>
</td>
public IActionResult BeerDelete(int id, int brewerId)
    {
        // This would select the beer and pass it into the view as the view's model.
        // Brewer should also be populated for this beer.
        var beer = _brewerRepository.GetBy(brewerId).Beers.FirstOrDefault(e => e.BeerId == id);
        return View(beer);
    }