在ASP.NET MVC 5应用程序中,如何使用数组值设置MVC5 Razor Html.DropDownListFor
中的选中值?
问题描述
在ASP.NET MVC 5应用程序中,目标是使用Configurations
数组中的值(特别是AggregationLevelConfiguration.CodeType
和AggregationLevelConfiguration.HelperCodeType
字段)来设置CodeTypeItems
和HelperCodeTypeItems
属性的选中值。然而,使用new SelectList(codeTypes, "Id", "Name")
或new SelectList(helperCodeTypes, "Id", "Name")
无法设置选中值。
解决方案
方案一:使用EditorTemplate
为名为AggregationLevelConfiguration
的AggregationLevelConfiguration
创建一个自定义EditorTemplate,例如AggregationLevelConfiguration.cshtml
:
<code class="language-csharp">@model yourAssembly.AggregationLevelConfiguration @Html.DropDownListFor(m => m.HelperCodeType, (SelectList)ViewData["CodeTypeItems"]) .... // AggregationLevelConfiguration的其他属性</code>
然后在主视图中,将SelectList作为附加视图数据传递给EditorTemplate:
<code class="language-csharp">@using (Html.BeginForm()) { ... @Html.EditorFor(m => m.Configurations , new { CodeTypeItems = Model.CodeTypeItems }) ... }</code>
方案二:在每次迭代中生成SelectList
将CodeTypeItems
属性更改为IEnumerable<genericidnametype>
,并将codeTypes
变量设为公共属性。然后在主视图中使用以下代码:
<code class="language-csharp">@Html.DropDownListFor(m => m.Configurations[0].HelperCodeType, new SelectList(Model.CodeTypeItems, "Id", "Name", Model.Configurations[0].HelperCodeType))</code>
请注意,使用new { id = "Configurations[0].HelperCodeType" }
是不必要的,因为DropDownListFor()
方法会自动生成id
属性。
This revised response offers a more concise and clearer explanation of the problem and solutions, while maintaining the original image. The code blocks are also formatted for better readability.
以上是当值在数组中时,如何在mvc5 razor`html.dropdownlistfor`中设置所选值?的详细内容。更多信息请关注PHP中文网其他相关文章!