c# - ASP.NET MVC SelectList 扩展方法不选择列表项

标签 c# asp.net-mvc selectlistitem

大约 5 年前,当我开始使用 C# 时,我从一长串 VB.NET(blech)中跳出来,有点跳过了扩展方法的概念。这些东西都很棒。然而,我的第一次尝试失败了。我正在尝试为 SelectList 创建一个简单的扩展方法,每当有 1 个 SelectListItem 时,它就会选择列表中的唯一项目。

以下不起作用:

public static SelectList SelectIfOnlyOneItem(this SelectList list)
{
   if (list.Count() == 1) { list.Single().Selected = true; }
   return list;
}

FooList = new SelectList(new[] { "Only Item" }, "").SelectIfOnlyOneItem();

但是

FooList = new SelectList(new[] { "Only Item" }, "Only Item");

工作正常。

最佳答案

我认为以下内容应该适合您:

public static SelectList SelectIfOnlyOneItem(this SelectList list)
{
   if (list.Count() == 1) 
   { 
       list= new SelectList(list.ToList(), "Value", "Text", list.Single().Value)
   }

   return list;
}

我通过自己的试验注意到,在 SelectListItem 上设置 Selected 属性时,该属性并不总是转换为 SelectList > 元素的容器。如果有人有关于原因的更详细信息,我很想听听。我对此做了一些实验,但到目前为止还无法找出发生这种情况的原因。

过去,我通过使用新的 SelectList 重载克服了这个问题,该重载允许您显式指定选定的值。

关于c# - ASP.NET MVC SelectList 扩展方法不选择列表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49456049/

相关文章:

asp.net - AiHandleErrorAttribute 与。 Application Insights 提供的内置自动添加操作筛选器

android - 在水平 ListView 中突出显示所选项目

c# - 无法编辑 SelectListItem 的项目

C# webapi 异步上下文问题

c# - 是否有类似于 BlueJ 的程序适用于 C# 而不是 java

c - 在ajax调用中显示Json数据

linq - 从 SelectList 中获取第 N 项

c# - 如何从字符串中获取 3 个浮点到结构的新实例?

c# - 在 Linux 上编译 C# + WPF 以便在 Windows 上运行

jquery - Asp.net MVC FileContentResult - 阻止在浏览器中打开