首頁 > 後端開發 > C++ > 當值在數組中時,如何在 @html.dropdownlistfor中設置所選值?

當值在數組中時,如何在 @html.dropdownlistfor中設置所選值?

Barbara Streisand
發布: 2025-01-30 00:46:08
原創
644 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板