在ASP.NET MVC5中,使用@Html.DropDownListFor處理數組值作為下拉列表選中項
在ASP.NET MVC 5中,@Html.DropDownListFor()
輔助方法用於為模型中的屬性渲染下拉列表。然而,有時您可能需要根據模型中數組或集合中的值來設置下拉列表的選中值。
考慮以下示例:
<code class="language-csharp">@Html.DropDownListFor(m => m.Configurations[0].HelperCodeType, (SelectList)Model.HelperCodeTypeItems, new { id = "Configurations[0].HelperCodeType" })</code>
在這個例子中,Configurations
屬性是一個 AggregationLevelConfiguration
對象的數組。我們希望根據 Configurations
數組中第一個元素的 HelperCodeType
屬性設置下拉列表的選中值。
但是,如果我們嘗試使用以下代碼設置下拉列表的選中值:
<code class="language-csharp">new SelectList(Model.HelperCodeTypeItems, "Id", "Name", Model.Configurations[0].HelperCodeType)</code>
我們會遇到錯誤。這是因為 SelectList
構造函數期望第四個參數是字符串,但 Model.Configurations[0].HelperCodeType
屬性是字節類型。
為了解決這個問題,我們可以使用以下兩種方法之一:
方法一:使用EditorTemplate
為 AggregationLevelConfiguration
類型創建一個自定義 EditorTemplate
。在 EditorTemplate
中,我們可以使用 @Html.DropDownListFor()
輔助方法為 HelperCodeType
屬性渲染下拉列表。我們還可以根據 Model.HelperCodeType
屬性設置下拉列表的選中值。
例如,以下 EditorTemplate
將下拉列表的選中值設置為 Model
對象的 HelperCodeType
屬性:
<code class="language-csharp">@model yourAssembly.AggregationLevelConfiguration @Html.DropDownListFor(m => m.HelperCodeType, (SelectList)ViewData["CodeTypeItems"]) .... // AggregationLevelConfiguration的其他属性</code>
方法二:在每次迭代中生成新的SelectList
在這種方法中,我們將為 Configurations
數組中的每個元素生成一個新的 SelectList
對象。然後,我們可以根據當前元素的 HelperCodeType
屬性設置下拉列表的選中值。
例如,以下代碼將為 Configurations
數組中的每個元素生成一個新的 SelectList
對象:
<code class="language-csharp">foreach (var configuration in Model.Configurations) { @Html.DropDownListFor(m => configuration.HelperCodeType, new SelectList(Model.HelperCodeTypeItems, "Id", "Name", configuration.HelperCodeType)) }</code>
這兩種方法都可以讓我們根據模型中數組或集合中的值來設置下拉列表的選中值。
以上是當值在數組中時,如何在ASP.NET MVC5 @html.dropdownlistfor中選擇一個值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!