如何在MVC中对两个控制器使用紧急加载?

问题描述 投票:0回答:1

我有两个模型及其表。餐厅:

    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());
    }

MenuInde​​x 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我搜索了急切加载的内容,但找不到类似的示例。有人可以告诉我如何实现吗?

asp.net asp.net-mvc entity-framework model-view-controller loading
1个回答
0
投票

通过查看代码和您拥有的“图像”。我只是将餐厅的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进行过滤。

在菜单视图中,您不必更改到目前为止所做的任何事情。

© www.soinside.com 2019 - 2024. All rights reserved.