SelectlistItem selected = истинная проблема

2

У меня возникают проблемы с получением выбранных элементов в списке выбора.

Product product = _pr.GetProducts().ByProductID(productID).First();
        product.Categories.Load();
        ICollection<Category> allCategories = _cr.GetCategories().ToList();

        List<SelectListItem> Categories = (from category in allCategories
                                           select
                                           new SelectListItem
                                           {
                                               Selected = product.Categories.Contains(category),
                                               Value = category.CategoryID.ToString(),
                                               Text = category.Categoryname
                                           }).ToList();

Категории возвращают 4 элемента, и выбрано значение false для всех....... Если я нахожу "product.Categories", там есть 3 элемента, что правильно.... но почему-то он не получает значение true,

Что может быть неправильным? /М

Теги:
asp.net-mvc

2 ответа

1
Лучший ответ

Перегрузка Contains(), которую вы используете, будет использовать сравнение объектов по умолчанию, которое будет соответствовать только одному экземпляру, если вы не переопределили Equals() и GetHashCode(). Один из вариантов - создать пользовательский CategoryEqualityComparer и передать его в эту перегрузку Contains(). Или вы можете просто присоединиться к категориям по ID:

Product product = _pr.GetProducts().ByProductID(productID).First();
product.Categories.Load();
ICollection<Category> allCategories = _cr.GetCategories().ToList();

List<SelectListItem> Categories = (
    from category in allCategories
    join pc in product.Categories
      on category.CategoryID equals pc.CategoryID into j
    select
    new SelectListItem
    {
        Selected = j.Any(),
        Value = category.CategoryID.ToString(),
        Text = category.Categoryname
    }).ToList();
  • 0
    блин .. ты меня побил на 14 секунд :)
0

Я вижу, что вы установили 'allCategories' в коллекцию _cr.GetCategories - уверены ли вы, что продукт содержит категории из этой коллекции? Похоже, что поле "Категории" не содержит ни одной из категорий продуктов. Можете ли вы разместить то, что находится в каждой коллекции?

  • 0
    Есть ли в Visual Studio какой-то простой трюк для этого?
  • 0
    Я не уверен, я так не думаю. Вы можете использовать цикл foreach () и просто выводить их на консоль.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню