将默认选项添加到 SelectList 不起作用

Posted

技术标签:

【中文标题】将默认选项添加到 SelectList 不起作用【英文标题】:Prepend default option to SelectList not working 【发布时间】:2020-04-26 00:21:09 【问题描述】:

在我的控制器中,我有:

var parentSubjects = new SelectList(_context.Subject, "SubjectId", "SubjectName");
parentSubjects.ToList().Insert(0, new SelectListItem()  Text = "None", Value = "" );

执行第二行时没有任何反应。我希望在列表的第 0 个索引处插入一个空白项。我错过了什么?

【问题讨论】:

ToList 创建一个新的单独列表。 谢谢,我将编辑我的帖子以包含解决方案。 很高兴你知道了。但是,不要将答案编辑为问题。改为在帖子中添加自我回答。编码快乐!!! 【参考方案1】:

当您调用parentSubjects.ToList() 时,您正在从parentSubjects 创建列表的新副本,Insert 对该副本进行操作。由于您没有保存列表,因此新项目会丢失。

您可以通过保存ToList() 创建的列表并使用它来解决此问题:

var parentSubjects = new SelectList(_context.Subject, "SubjectId", "SubjectName").ToList();
parentSubjects.Insert(0, new SelectListItem()  Text = "None", Value = "" );

如果您在视图中使用asp-items 标签助手,还有一个不同的选项可以避免为您的空白/默认选项创建SelectListItem。您可以直接将选项添加到 html 那里:

<select asp-for="SelectedSubjects" asp-items="Subjects">
    <!-- simply add the option directly here; the options from
         `asp-items` will be added below -->
    <option value="">None</option>
</select>

【讨论】:

以上是关于将默认选项添加到 SelectList 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

PyQt5,将文本添加到选项卡不起作用

添加 select2 插件以选择选项后。 Laravel Livewire 搜索不起作用

LocalDB 导入和导出选项不起作用

数据表默认排序不起作用

EF 6:添加具有默认值的新属性不起作用[重复]

从父片段到选项卡片段的接口侦听器不起作用