c# - SelectlistItem selected = true 问题

标签 c# asp.net-mvc

我在获取选择列表中的所选项目时遇到问题。

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 个项目,并且 selected 全部为假......如果我将鼠标悬停在“product.Categories”上,那里有 3 个项目,这是正确的......但不知何故它没有设置为 true .

可能出了什么问题? /M

最佳答案

您正在使用的 Contains() 重载将使用默认对象比较,除非您重写了 Equals()<,否则它只会匹配完全相同的实例GetHashCode()。一种选择是创建自定义 CategoryEqualityComparer 并将其传递给 this overload of 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();

关于c# - SelectlistItem selected = true 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1287709/

相关文章:

asp.net - 将数据插入到多表 MVC ASP 的最佳方法

c# - 未捕获的类型错误 : undefined is not a function - Highcharts - MVC

c# - 如何打印彩色文本

c# - WebAPI 发布 JSON 字符串并将其映射到模型

c# - 将 C# 与 Active Directory 教程结合使用

c# - 调试时可以永久删除断点吗?

c# - 为基类的每个 child 创建一个静态变量并获取它

asp.net - ASP.NET webforms 和 MVC 之间的主要区别是什么

jquery - 从外部 Javascript 文件访问 ASP.NET MVC 模型数据

c# - 为什么 Thread.CurrentThread.CurrentCulture 在页面渲染和 HttpModule.PostRequestHandlerExecute 之间会发生变化?