ASP.NET MVC 4 ViewModel mit Daten DropDownList
Ich bin mit @html.EditorFor
zu Rendern mein Modell in den edit-Modus, und eine dropdownlist wird nicht gerendert.
Hier mein ViewModel:
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
gerendert wird als textbox und VehicleMakeList
ist, wird nicht dargestellt bei allen. Was ich möchte ist das Rendern einer dropdownlist mit der Liste der VehicleMake
und setzen Sie seinen Wert mit dem von VehicleMake
.
Wenn das Modell gespeichert wird, VehicleMake sollte festgelegt werden, um den Wert des ausgewählten Elements in der Liste.
Wie kann ich das tun ?
BEARBEITEN
Da kann ich nicht geben Sie einen beliebigen code in den Kommentar-Boxen unter, ich Schreibe ein follow-up hier.
Ich landete ein EditorTemplate wie:
<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>
Und jetzt ist mein ViewModel sieht so aus:
[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; }
Nun das führt mich zu einer weiteren Frage (vielleicht sollte ich wie in einem anderen thread), aber ich habe eigentlich ZWEI dropdowns in dieser Ansicht. Und die Einträge in der zweiten dropdown-sind grundsätzlich dynamisch und Sie hängen von dem gewählten Eintrag in der ersten dropdown-Liste. Dieser ist tot einfach zu tun mit AJAX, aber mit MVC-ich bin verloren. Wie gehen die Menschen tun, die in der Regel ?
- Und nur ein heads-up für Sie, wenn Sie sich entscheiden, Folgen Sie den
@Html.EditorFor()
mit einem@Html.DropDownlistFor
, wirst du Probleme mit dem binden der VehicleMake Eigenschaft mit der dropdown-Auswahl, als es Wert ist, wird ermittelt, indem das Textfeld redered durch dieEditorFor()
- bearbeitet meine Antwort mit die einfachste Lösung
Du musst angemeldet sein, um einen Kommentar abzugeben.
Leider gibt es keine integrierte Unterstützung für drop-down-Listen im editor für templates. Sie können entweder schreiben Sie Ihre eigenen template-editor, oder verwenden Sie die html-helper-Methode
@Html.DropDownListFor()
in Ihrem Blick.Darin dimitrovs Antwort auf diese Frage können, gehen Sie durch den Prozess der Erstellung einer template-editor für drop-down-Listen, wenn Sie so geneigt sind.
Der Schnellste Weg um dies zu bewerkstelligen, wäre dies aus Ihrer Sicht:
Ich denke, dass das Modell für die dropdownlist sollte:
Und initialisiert wie:
Oder die Verwendung einer Datasource:
Anzeigen:
Bindung dropdownlist ist sehr schwierig in MVC
Sie können es tun, mit diesem in Ihrem controller erhalten Sie alle Ihre Städte-Liste setzen es in viewBag
Erstellen
Benutzer.CityID wenn Sie im Bearbeitungsmodus, so dass Sie auf Bearbeiten, wählen Sie die Stadt
Ihrer Ansicht nach nur tun dieser trick
dies ist der einfachste Weg, ich weiß....
Bindung dropdown-Liste ist einfach. code wie folgt
- Code in view -
code hier http://dotnetmentors.com/mvc/how-to-bind-dropdownlist-in-asp-net-mvc-application.aspx