在数组中设置选择列表值的正确方法?

Posted

技术标签:

【中文标题】在数组中设置选择列表值的正确方法?【英文标题】:Proper way to set select list value in an array? 【发布时间】:2022-01-07 16:09:55 【问题描述】:

我见过的关于如何使用 DropDownListFor 的大多数示例都显示了具有 SelectListItemIEnumerableList 的模型,您可以为要使用的项目设置 Selected 属性最初显示。

对一系列下拉列表执行此操作的(或一种)正确方法是什么?我想我可以创建一个IEnumerable<IEnumerable<SelectList>>,所以每个下拉列表都在IEnumerable<SelectList>> 上,并选择了适当的值,但这似乎不正确。

我认为 DropDownListFor 方法有一个重载让您设置默认值会很有意义。目前我能想到的最佳解决方案是在调用 DropDownListFor 之前简单地为正确的项目设置默认值(并清除所有其他项目的选定值)。

但肯定有更合适的方法吗?或者DropDownListFor 不适合这份工作,直接 html 会更容易?

【问题讨论】:

【参考方案1】:

而不是DropDownListFor我通常使用

<select class="form-control" id="itemId" asp-for="@Model.ItemId" 
asp-items="@Model.Items"></select>

其中项目 = 列表。它会自动从选择列表的值中选择 ItemId 并显示正确的文本。

【讨论】:

+1 因为如果我使用核心,那将是一个很好的答案。我添加了另一个标签来指定这是针对框架版本 4.5.2 的。我确实尝试过,但没有骰子。 ://【参考方案2】:

我最终只是在 DropDownListFor 语句正上方的视图中添加了一行代码来更改所选项目,如下所示:

Model.ExpenseCategories.ForEach(cat =&gt; cat.Selected = cat.Value == item.CategoryName);

似乎应该有更好的方法来做到这一点,但这是一个非常简单的解决方案。在接受我自己的答案之前,我会稍等片刻,以防其他人有更好的方法。

【讨论】:

以上是关于在数组中设置选择列表值的正确方法?的主要内容,如果未能解决你的问题,请参考以下文章

使用Angularjs在选择下拉菜单中设置默认值

如何使用 Cloud Firestore 在颤动中设置参考选择数组的位置条件 [关闭]

从数组或列表中设置数据表整列的值

有没有像python中设置的数组方法?

如何在数组中设置特定对象的状态

如何正确命名包含返回从此类中设置的源中选择的值并以相同方式设置源值的属性的类?