第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當(dāng)值在數(shù)組中時選定的MVC 5 Razor html.Drodown listfor集

當(dāng)值在數(shù)組中時選定的MVC 5 Razor html.Drodown listfor集

尚方寶劍之說 2019-06-13 17:53:32
當(dāng)值在數(shù)組中時選定的MVC 5 Razor html.Drodown listfor集我正在用C#和.NET Framework4.6.1開發(fā)ASP.NETMVC 5應(yīng)用程序。我有這個View:@model MyProject.Web.API.Models.AggregationLevelConfViewModel[...]@Html.DropDownListFor(m => m.Configurations[0].HelperCodeType,  (SelectList)Model.HelperCodeTypeItems, new { id = "Configurations[0].HelperCodeType" })這個ViewModel是:public class AggregationLevelConfViewModel{     private readonly List<GenericIdNameType> codeTypes;     private readonly List<GenericIdNameType> helperCodeTypes;     public IEnumerable<SelectListItem> CodeTypeItems     {         get { return new SelectList(codeTypes, "Id", "Name"); }     }     public IEnumerable<SelectListItem> HelperCodeTypeItems     {         get { return new SelectList(helperCodeTypes, "Id", "Name"); }     }     public int ProductionOrderId { get; set; }     public string ProductionOrderName { get; set; }     public IList<Models.AggregationLevelConfiguration> Configurations { get; set; }     public AggregationLevelConfViewModel()     {         // Load CodeTypes to show it as a DropDownList         byte[] values = (byte[])Enum.GetValues(typeof(CodeTypes));         codeTypes = new List<GenericIdNameType>();         helperCodeTypes = new List<GenericIdNameType>();         for (int i = 0; i < values.Length; i++)         {             GenericIdNameType cType = new GenericIdNameType()             {                 Id = values[i].ToString(),                 Name = EnumHelper.GetDescription((CodeTypes)values[i])             };             if (((CodeTypes)values[i]) != CodeTypes.NotUsed)                 codeTypes.Add(cType);             helperCodeTypes.Add(cType);         }     }}但我不能把它放進去new SelectList(codeTypes, "Id", "Name");或new SelectList(helperCodeTypes, "Id", "Name");因為所選的值在Configurations數(shù)組:字段AggregationLevelConfiguration.CodeType和AggregationLevelConfiguration.HelperCodeType.我想我必須在視圖中設(shè)置選定的值,但是我不知道如何去做。如何設(shè)置選定的值?
查看完整描述

3 回答

?
達(dá)令說

TA貢獻(xiàn)1821條經(jīng)驗 獲得超6個贊

不幸的是@Html.DropDownListFor()在循環(huán)中呈現(xiàn)控件時,其行為與其他幫助程序略有不同。這以前曾在CodePlex上被報道為一個問題(不確定它是一個bug還是一個限制)

用于解決此問題的are 2選項,以確保根據(jù)模型屬性選擇正確的選項。

備選案文1(使用EditorTemplate)

創(chuàng)建自定義EditorTemplate用于集合中的類型。創(chuàng)建部分/Views/Shared/EditorTemplates/AggregationLevelConfiguration.cshtml(注意,名稱必須與類型的名稱匹配。

@model yourAssembly.AggregationLevelConfiguration@Html.DropDownListFor(m => m.HelperCodeType, (SelectList)ViewData["CodeTypeItems"]).... 
// other properties of AggregationLevelConfiguration

然后在主視圖中,傳遞SelectListEditorTemplateadditionalViewData

@using (Html.BeginForm()){
  ...
  @Html.EditorFor(m => m.Configurations , new { CodeTypeItems = Model.CodeTypeItems })
  ...

備選案文2(生成一個新的SelectList在每次迭代中,并設(shè)置selectedValue)

在此選項中,您的財產(chǎn)CodeTypeItems應(yīng)該是IEnumerable<GenericIdNameType>,而不是SelectList(或者只是讓codeTypes(公共財產(chǎn))然后在主視圖中

@Html.DropDownListFor(m => m.Configurations[0].HelperCodeType, new SelectList(Model.CodeTypeItems, "Id", "Name", 
Model.Configurations[0].HelperCodeType)

附帶說明:沒有必要使用new { id = "Configurations[0].HelperCodeType"--DropDownListFor()方法已經(jīng)生成了id屬性


查看完整回答
反對 回復(fù) 2019-06-13
  • 3 回答
  • 0 關(guān)注
  • 547 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號