首页 >后端开发 >C++ >当值在数组中时,如何在mvc5 razor @html.dropdownlistfor中设置所选项目?

当值在数组中时,如何在mvc5 razor @html.dropdownlistfor中设置所选项目?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-30 00:26:09505浏览

How to Set the Selected Item in an MVC5 Razor @Html.DropDownListFor when the Value is in an Array?

在MVC5 Razor中,当@Html.DropDownListFor的值为数组时,如何设置选定项?

ASP.NET MVC中的@Html.DropDownListFor 辅助方法用于为模型中的属性生成下拉列表。当模型属性为数组或集合时,将为数组或集合中的每个项目呈现下拉列表。

然而,当值在数组或集合中时,设置下拉列表的选中值可能会很棘手。默认情况下,选中值将基于数组或集合中的第一项设置。

要设置值在数组或集合中的选中值,您可以使用以下两种方法:

方法一:使用编辑器模板

为集合中的类型创建一个自定义编辑器模板。在Views/Shared/EditorTemplates/AggregationLevelConfiguration.cshtml中创建一个部分视图,包含以下代码:

<code class="language-csharp">@model yourAssembly.AggregationLevelConfiguration
@Html.DropDownListFor(m => m.HelperCodeType, (SelectList)ViewData["CodeTypeItems"])
.... // AggregationLevelConfiguration的其他属性</code>

然后在主视图中,将SelectList作为附加ViewData传递给编辑器模板:

<code class="language-csharp">@using (Html.BeginForm())
{
  ...
  @Html.EditorFor(m => m.Configurations , new { CodeTypeItems = Model.CodeTypeItems })
  ...
}</code>

方法二:在每次迭代中生成新的SelectList并设置选中值

在此方法中,将CodeTypeItems属性设为IEnumerable<genericidnametype>而不是SelectList。然后在主视图中,为Configurations数组中的每个项目生成一个新的SelectList

<code class="language-csharp">@Html.DropDownListFor(m => m.Configurations[0].HelperCodeType, new SelectList(Model.CodeTypeItems, "Id", "Name", Model.Configurations[0].HelperCodeType))</code>

请注意,此方法仅适用于Configurations数组的第一个元素。 对于数组中的其他元素,需要进行循环处理并为每个元素分别生成SelectList。 这可能需要使用循环结构(如for循环或foreach循环)来迭代数组,并在每次迭代中生成并渲染一个新的DropDownListFor。 这将确保每个下拉列表都正确地设置其选中值。

以上是当值在数组中时,如何在mvc5 razor @html.dropdownlistfor中设置所选项目?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn