ASP.NET MVC 3: ViewModel, которая имеет дело со списком списков - PullRequest
1 голос
/ 29 марта 2011

Я пытаюсь собрать ViewModel, у которого будет список пользователей, и у каждого пользователя будет список местоположений.Таблица пользователя и таблица местоположения объединяются с помощью другой таблицы, которая содержит каждый соответствующий идентификатор и некоторую другую информацию.Эта таблица, по сути, является таблицей соединения многих ко многимЯ пробовал несколько разных подходов viewModel, и их нам очень не хватает ... Какой будет лучший подход для отображения информации такого типа?

1 Ответ

2 голосов
/ 29 марта 2011

Я предполагаю, что проблема в том, что вы хотите иметь доступ к коллекции либо по пользователю, либо по расположению.Одним из подходов может быть использование ILookup<> классов.Вы начнете с коллекции «многие ко многим» и произведете поиск следующим образом:

var lookupByUser = userLocations.ToLookup(ul => ul.User);
var lookupByLocation = userLocations.ToLookup(ul => ul.Location);

Обновление:

В соответствии с вашим описанием кажется, что вына самом деле не нужно иметь полное отношение «многие ко многим» в вашей ViewModel.Скорее ваша ViewModel может иметь такую ​​структуру:

public class YourViewModel
{
    public IEnumerable<UserViewModel> Users { get; set; }
}

public class UserViewModel
{
    // User-related stuff

    public IEnumerable<LocationViewModel> Locations { get; set; }
}

Если вы хотите избежать избыточных LocationViewModel объектов, вы можете предварительно построить отображение между объектами Model и ViewModel:

var locationViewModels = myLocations.ToDictionary(
    loc => loc, loc => CreateLocationViewModel(loc));

А затем повторно используйте эти объекты при заполнении ViewModel вашей страницы.

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