C#と.NET Framework 4.6.1を使用してASP.NET MVC 5アプリケーションを開発しています。MVC5値が配列のときにhazard html.dropdownlistが選択されています
@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);
}
}
}
そしてModels.AggregationLevelConfiguration
です:
public class AggregationLevelConfiguration
{
public byte AggregationLevelConfigurationId { get; set; }
public int ProductionOrderId { get; set; }
public string Name { get; set; }
public byte CodeType { get; set; }
public byte HelperCodeType { get; set; }
public int PkgRatio { get; set; }
public int RemainingCodes { get; set; }
}
が、私はこれらのプロパティで選択した値を設定する必要があります。
私はこのView
が持っている
フィールド
AggregationLevelConfiguration.CodeType
と
AggregationLevelConfiguration.HelperCodeType
:選択した値が
Configurations
配列であるため
public IEnumerable<SelectListItem> CodeTypeItems
{
get { return new SelectList(codeTypes, "Id", "Name"); }
}
public IEnumerable<SelectListItem> HelperCodeTypeItems
{
get { return new SelectList(helperCodeTypes, "Id", "Name"); }
}
しかし、私はnew SelectList(codeTypes, "Id", "Name");
またはnew SelectList(helperCodeTypes, "Id", "Name");
でそれを設定することはできません。
ビューで選択した値を設定する必要があると思いますが、その方法はわかりません。
選択した値を設定するにはどうすればよいですか?
その使用の不幸な制限 'DropDownListFor() 'という。それぞれの反復で新しいMutliSelectListを生成する必要があります(コンストラクタの 'selectedValues'プロパティを設定する)か、'(AggregationLevelConfiguration'の型に 'EditorTemplate'を使用し、' SelectList'を ' AdditionalViewData' –
ありがとうございました。私は物事を使わなければならないと理解していましたが、私はそれらをどのように使うべきか分かりません。 – VansFannel
私は約6ヶ月前に両方のオプションのコードを使って答えを見つけようとしていますが、運が足りません。見つけられない場合は、1時間ほどで回答を追加しますが、次のように動作します - '@Html.DropDownListFor(m => m.Configurations [0] .HelperCodeType、new SelectList(Model.HelperCodeTypeItems、 –