Asp.net mvc 将默认选项前置到SelectList not working

Asp.net mvc 将默认选项前置到SelectList not working,asp.net-mvc,asp.net-core,insert,selectlist,prepend,Asp.net Mvc,Asp.net Core,Insert,Selectlist,Prepend,在我的控制器中,我有: var parentSubjects = new SelectList(_context.Subject, "SubjectId", "SubjectName"); parentSubjects.ToList().Insert(0, new SelectListItem() { Text = "None", Value = "" }); 执行第二行时不会发生任何事情。我希望在列表的第0个索引处插入一个空白项。我缺少什么?当您调用parentSubjects.ToList

在我的控制器中,我有:

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

执行第二行时不会发生任何事情。我希望在列表的第0个索引处插入一个空白项。我缺少什么?

当您调用
parentSubjects.ToList()
时,您正在从
parentSubjects
创建列表的新副本,并且
插入操作将对该副本进行操作。由于未保存列表,新项目将丢失

您可以通过保存由
ToList()
创建的列表并使用该列表来修复此问题:

var parentSubjects=new SelectList(_context.Subject,“SubjectId”,“SubjectName”).ToList();
插入(0,新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>

没有一个

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

您可以通过保存由
ToList()
创建的列表并使用该列表来修复此问题:

var parentSubjects=new SelectList(_context.Subject,“SubjectId”,“SubjectName”).ToList();
插入(0,新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>

没有一个

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