【问题标题】: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 会更容易?

【问题讨论】:

    标签: c# asp.net-mvc .net-4.5 selectlistitem


    【解决方案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);

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

    【讨论】:

      猜你喜欢
      • 2021-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多