モデルを編集モードでレンダリングするために使用@html.EditorFor
していますが、ドロップダウン リストがレンダリングされません。
ここに私のビューモデルがあります:
public class RiskAutoViewModel
{
public RiskAutoViewModel()
{
VehicleMakeList = new SelectList(new List<VehicleMake>() { new VehicleMake() { Id = 1, Name = "Renault" }, new VehicleMake() { Id = 2, Name = "Peugeot" } });
}
public int NoClaimsDegree { get; set; }
public int VehicleValue { get; set; }
public int EngineCapacity { get; set; }
public int VehicleMake { get; set; }
public SelectList VehicleMakeList { get; set; }
}
VehicleMake
テキストボックスとしてレンダリングされ、まったくVehicleMakeList
レンダリングされません。私が望むのは、のリストを含むドロップダウンリストをレンダリングし、VehicleMake
その値をのいずれかに設定することですVehicleMake
。
モデルが保存されると、VehicleMake はリストで選択された項目の値に設定されます。
どうやってやるの ?
編集
以下のコメント ボックスにコードを入力できないので、ここに補足を書きます。
最終的に次のような EditorTemplate を作成しました。
<div class="editor-label">
@Html.LabelFor(model => model.VehicleMakeList)
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.VehicleMake, Model.VehicleMakeList)
@Html.ValidationMessageFor(model => model.VehicleMake)
</div>
そして今、私のViewModelは次のようになります:
[Required]
[ScaffoldColumn(false)]
public int VehicleMake { get; set; }
[Display(Name = "Marque", Prompt = "Marque", Description = "Renseigne la marque du véhicule")]
public SelectList VehicleMakeList { get; set; }
これは別の質問につながります(おそらく別のスレッドのようにする必要があります)が、実際にはそのビューに2つのドロップダウンがあります。そして、2 番目のドロップダウンの項目は基本的に動的で、最初のドロップダウンで選択された項目に依存します。これは AJAX では簡単に実行できますが、MVC では道に迷ってしまいます。人々は通常どのようにそれをしますか?