Как использовать готовую загрузку для двух контроллеров в mvc? - PullRequest
0 голосов
/ 09 марта 2020

У меня есть две модели и их таблицы. Ресторан:

    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 с представлениями. У меня есть индекс ресторана, который показывает список ресторанов, и он должен иметь кнопку меню в каждой информации о ресторане. Также у меня есть индекс меню, который показывает пункты меню. И теперь моя задача - показать пункты меню, которые относятся к конкретному c ресторану. RestaurantIndex Actionresult:

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

        }

Это список моего ресторана: введите описание изображения здесь И это меню: но он показывает все элементы Я искал о нетерпении загрузки, но не смог найти похожие примеры. Может кто-нибудь сказать мне, как это реализовать?

1 Ответ

0 голосов
/ 09 марта 2020

Из просмотра кода и «изображений» у вас есть. Я бы просто передал Id ресторана как nullable int? в Index MenuController, например:

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

Затем выше мы фильтруем идентификатор ресторана в контроллере вместо view.

В представлении меню вам не нужно ничего менять до сих пор.

При наличии идентификатора в качестве обнуляемого параметра этот метод Index можно вызывать с помощью ID или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...