我有两个模型及其表。餐厅:
public int Id { get; set; } public string Name { get; set; } public string Location { get; set; } public string Image { get; set; } [InverseProperty("Restaurant")] [InverseProperty("Restaurant")] public ICollection<Menu> Menus { get; set; }
和菜单:
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
public string Image { get; set; }
public int RestaurantId { get; set; }
public virtual Restaurant Restaurant { get; set; }
并且我通过使用带有视图的EntityFramework创建了控制器。我有“餐厅索引”视图,其中显示了餐厅列表,并且每个餐厅信息中都必须具有菜单按钮。我也有菜单索引视图,显示菜单项。现在我的问题是要显示与特定餐厅有关的菜单项。RestaurantIndex操作结果:
public ActionResult Index() { var restaurants = db.Restaurants; return View(restaurants.ToList()); }
MenuIndex ActionResult:
public ActionResult Index()
{
var menus = db.Menus.Include(m => m.Restaurant);
return View(menus.ToList());
}
我的餐厅列表:enter image description here它是菜单:but it shows all items我搜索了急切加载的内容,但找不到类似的示例。有人可以告诉我如何实现吗?
通过查看代码和您拥有的“图像”。我只是将餐厅的Id
作为可空int?
传递到MenuController的Index
中,例如:
public ActionResult Index(int? restaurantId = null)
{
List<Menu> menus = new List<Menu>();
if(menuId != null){
menus = db.Menus.Include(m => m.Restaurant).Where(x => RestaurantId == restaurantId);
}
else{
menus = db.Menus.Include(m => m.Restaurant)
}
return View(menus.ToList());
}
然后,我们在控制器而不是视图中根据餐厅ID进行过滤。
在菜单视图中,您不必更改到目前为止所做的任何事情。