Ich verwende @html.EditorFor
, um mein Modell im Bearbeitungsmodus zu rendern, und ein Dropdown-Liste wird nicht gerendert.
Hier ist mein ViewModel:
public class RiskAutoViewModel
{
public RiskAutoViewModel()
{
VehicleMakeList = new SelectList(new List() { 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
wird als Textfeld gerendert und VehicleMakeList
wird überhaupt nicht gerendert. Was ich gerne hätte, ist eine Dropdown-Liste mit der Liste von VehicleMake
zu rendern und ihren Wert auf den von VehicleMake
zu setzen.
Wenn das Modell gespeichert wird, sollte VehicleMake auf den Wert des ausgewählten Elements in der Liste gesetzt werden.
Wie kann ich das machen ?
BEARBEITEN
Da ich in den Kommentarfeldern unten keinen Code eingeben kann, schreibe ich hier eine Fortsetzung.
Ich habe schließlich ein EditorTemplate erstellt wie folgt:
@Html.LabelFor(model => model.VehicleMakeList)
@Html.DropDownListFor(model => model.VehicleMake, Model.VehicleMakeList)
@Html.ValidationMessageFor(model => model.VehicleMake)
Und jetzt sieht mein ViewModel so aus:
[Erforderlich]
[ScaffoldColumn(false)]
public int VehicleMake { get; set; }
[Display(Name = "Marke", Prompt = "Marke", Description = "Geben Sie die Marke des Fahrzeugs ein")]
public SelectList VehicleMakeList { get; set; }
Dies führt mich nun zu einer anderen Frage (vielleicht sollte ich das in einem anderen Thread fragen), aber eigentlich habe ich ZWEI Dropdown-Listen in dieser Ansicht. Und die Elemente in der zweiten Dropdown-Liste sind im Grunde dynamisch und hängen vom ausgewählten Element in der ersten Dropdown-Liste ab. Das ist mit AJAX ganz einfach zu machen, aber mit MVC bin ich verloren. Wie machen das die Leute normalerweise ?