在数组中设置选择列表值的正确方法?
Posted
技术标签:
【中文标题】在数组中设置选择列表值的正确方法?【英文标题】:Proper way to set select list value in an array? 【发布时间】:2022-01-07 16:09:55 【问题描述】:我见过的关于如何使用 DropDownListFor
的大多数示例都显示了具有 SelectListItem
的 IEnumerable
或 List
的模型,您可以为要使用的项目设置 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>
其中项目 = 列表
【讨论】:
+1 因为如果我使用核心,那将是一个很好的答案。我添加了另一个标签来指定这是针对框架版本 4.5.2 的。我确实尝试过,但没有骰子。 ://【参考方案2】:我最终只是在 DropDownListFor
语句正上方的视图中添加了一行代码来更改所选项目,如下所示:
Model.ExpenseCategories.ForEach(cat => cat.Selected = cat.Value == item.CategoryName);
似乎应该有更好的方法来做到这一点,但这是一个非常简单的解决方案。在接受我自己的答案之前,我会稍等片刻,以防其他人有更好的方法。
【讨论】:
以上是关于在数组中设置选择列表值的正确方法?的主要内容,如果未能解决你的问题,请参考以下文章