将默认选项添加到 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 不起作用的主要内容,如果未能解决你的问题,请参考以下文章