gpt4 book ai didi

c# - 为什么我的 SelectList 填充了一个不需要的空白选项

转载 作者:行者123 更新时间:2023-11-30 18:24:25 26 4
gpt4 key购买 nike

我正在努力创建一个包含下拉列表的 View 。为了生成选择列表项,我编写了一个方法来返回 SelectListItem 的列表。此下拉列表所需 - 其中一个具有 Selected 属性设置为 true。

我已经追踪了生成 IEnumerable<SelectListItem> 的方法代表我希望呈现的选项,它正在返回所需的结果。

但是当我使用 Html.DropDownList() 时利用IEnumerable<SelectListItem>返回上面,我呈现的选择元素有一个初始的空白选项,它不会出现在 DOM 中。选择任何选项都会将其删除,但我很困惑为什么从 List<SelectListItem> 中选择的选项不被尊重。

SelectListItem的静态方法生成列表| :

public static IEnumerable<SelectListItem> GetDropDownValues()
{
IEnumerable<MyClass> myClassesForList = MyClass.GetItemsForList();
List<SelectListItem> retVal = new List<SelectListItem>();
retVal.Add(new SelectListItem() { Text = "Choose", Value = "0", Selected=true });

IEnumerable<SelectListItem> myClassesSelectListItems =
from x in myClassesForList
select new SelectListItem
{
Text = x.Name,
Value = x.Value
};

return retVal.Concat(myClassesSelectListItems);
}

相关的 Razor 片段:

@Html.DropDownList("dropDownVals", GetDropDownValues())

编辑 1:结果下拉列表的屏幕截图

Screenshot of resulting DropDownList

最佳答案

确保没有名为 dropDownVals 的 viewbag/viewdata,它保存的值不存在于 GetDropDownValues 方法返回的列表中

如果您使用 AddRange 而不是 Concat 会怎样:

retVal.Add(new SelectListItem() { Text = "Choose", Value = "0", Selected=true });
var myClassesSelectListItems = from x in myClassesForList
select new SelectListItem
{
Text = x.Name,
Value = x.Value
};

retVal.AddRange(myClassesSelectListItems);

return retVal;

关于c# - 为什么我的 SelectList 填充了一个不需要的空白选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31306896/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com