Auswahlliste ausgewählte Wert nicht übernommen (DropDownList
Ich habe eine Razor-Seite mit einem drop-down-Liste in einem Formular:
@using (Html.BeginForm("ProductsByOwners", "Report", FormMethod.Post, new { @id = "ProductsByOwners" }))
{
@Html.Label("Choose product owner: ")
@Html.DropDownList("OwnerList", (SelectList)ViewBag.OwnerList, new { @onchange = "this.form.submit();" })
}
Den ausgewählten Wert meiner SelectList
ist nicht auf die DropDownList
. Ich habe gedebuggt und trat durch den code, und festgestellt, dass (SelectList)ViewBag.OwnerList
wertet richtig und hat den erwarteten Wert gewählt, aber der resultierende HTML-Code nicht eines der option
tags ausgewählt.
Kann jeder sehen, was mache ich hier falsch?
AKTUALISIERT
Hier ist, wie der Auswahlliste erstellt, in der meine Aktion:
ViewBag.OwnerList = new SelectList(ListUtils.ProductOwners(), "Key", "Value", values["OwnerList"]);
Das Ergebnis hat den Wert, angezeigt durch values["OwnerList"]
ausgewählt.
Dank!
- Können Sie zeigen konnte, wo Sie die Auswahlliste?
- Ich fügte hinzu, ein update. Obwohl, ich bin mir ziemlich sicher, dass das problem in der View. Ich trat schon durch den code in der Ansicht und die Auswahlliste hat einen ausgewählten Wert.
- Sind Sie sicher, dass der angegebene Wert (Werte["OwnerList"]) existiert in der ProductOwners-Liste? Sind die Werte korrekt gerendert in der select-Liste?
- Yep. Wenn ich eine Uhr zu
ViewBag.OwnerList
, dieSelectedValue
Eigenschaft ist die gleiche wievalues["OwnerList"]
und wenn ich einen Drilldown zu, dassSelectListItem
, dieSelected
Eigenschaft isttrue
. - Welche Art von Typ ist, 'der Schlüssel'? Haben Sie versucht, casting-Werte["OwnerList"], um die spezifische Art?
- Geändert
(string)values["OwnerList"]
. Dasselbe Ergebnis; derSelectList
hat den richtigen Wert ausgewählt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie nicht die DropDownList Helfer richtig. Um eine dropdownlist, benötigen Sie 2 Dinge:
In Ihrem Beispiel haben Sie nur eines dieser 2 Dinge (die zweite). Ihr erstes argument genannt wird
OwnerList
und Sie habenViewBag.OwnerList
übergeben, als zweites argument.Also:
Offensichtlich würde ich dir empfehlen die Verwendung stark typisierter sichten und Modelle ansehen. Und natürlich loszuwerden, die schwach typisiert ist, ViewBag/ViewData/ViewCrap.
Starten Sie also durch die Gestaltung einer view-Modell, um die Anforderungen Ihrer Ansicht (die von dem, was Sie gezeigt haben, so weit ist die Anzeige einer dropdownlist):
dann einen controller:
haben, und Sie haben eine entsprechende, stark typisierte Ansicht:
Der häufigste Grund dafür, dass das ausgewählte Element nicht ausgewählt ist, der DDL ist Sie benannt haben die selectlist das gleiche wie das Modell.
Stark typisierte Ansichten werden bevorzugt, aber es ist feine zu übergeben, die Auswahlliste in einem Viewbag. Siehe mein tutorial Arbeiten mit dem DropDownList-Feld und jQuery und mein blog Cascading DropDownList in ASP.Net MVC