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

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

Barbara Streisand
发布: 2025-01-30 00:46:08
原创
641 人浏览过

How to Set the Selected Value in @Html.DropDownListFor When the Value Is in an Array?

在ASP.NET MVC 5中使用@Html.DropDownListFor设置数组中值的选中项

在ASP.NET MVC 5应用程序中,@Html.DropDownListFor() 辅助方法可用于从数据集合生成下拉列表。但是,当处理复杂数据结构(例如数组)时,根据数组中属性设置选中值可能会带来挑战。

考虑以下ViewModel:

<code class="language-csharp">@model MyProject.Web.API.Models.AggregationLevelConfViewModel

@Html.DropDownListFor(m => m.Configurations[0].HelperCodeType, (SelectList)Model.HelperCodeTypeItems, new { id = "Configurations[0].HelperCodeType" })</code>
登录后复制

这里的挑战是如何根据Configurations数组中第一个AggregationLevelConfiguration对象的HelperCodeType属性设置下拉列表中的选中值。SelectList构造函数中设置选中值的常规方法无效,因为HelperCodeTypeItems集合中没有可用的选中值。

解决方案:

方法一:使用编辑器模板

/Views/Shared/EditorTemplates/AggregationLevelConfiguration.cshtml中创建一个编辑器模板:

<code class="language-csharp">@model yourAssembly.AggregationLevelConfiguration
@Html.DropDownListFor(m => m.HelperCodeType, (SelectList)ViewData["CodeTypeItems"])</code>
登录后复制

然后,在主视图中,使用additionalViewDataSelectList传递给编辑器模板:

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

方法二:生成新的SelectList

CodeTypeItems设为IEnumerable<genericidnametype>而不是SelectList。然后,在主视图中:

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

请注意,id属性由DropDownListFor()自动生成,无需手动指定。

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板