Ich erstelle meine erste MVC-Anwendung, nachdem ich jahrelang Webformulare erstellt habe, und aus irgendeinem Grund kann ich diese Funktion nicht ausführen:
@Html.DropDownList("PriorityID", String.Empty, new {@class="textbox"} )
Fehlermeldung:
System.Web.Mvc.HtmlHelper<SPDR.Models.Bug>
'enthält keine Definition für DropDownList
und die Überlastung der besten Erweiterungsmethode System.Web.Mvc.Html.SelectExtensions.DropDownList(System.Web.Mvc.HtmlHelper, string, System.Collections.Generic.IEnumerable<System.Web.Mvc.SelectListItem>, object)
enthält einige ungültige Argumente
Jede Hilfe sehr geschätzt!
asp.net-mvc
razor
Lee Bailey
quelle
quelle
Antworten:
Als ich mir den Controller ansah und etwas mehr darüber erfuhr, wie MVC tatsächlich funktioniert, konnte ich dies verstehen.
Meine Ansicht war eine der automatisch generierten und enthielt diese Codezeile:
@Html.DropDownList("PriorityID", string.Empty)
Um HTML-Attribute hinzuzufügen, musste ich Folgendes tun:
@Html.DropDownList("PriorityID", (IEnumerable<SelectListItem>)ViewBag.PriorityID, new { @class="dropdown" })
Nochmals vielen Dank an @Laurent für Ihre Hilfe. Mir ist klar, dass die Frage nicht so klar war, wie es hätte sein können ...
AKTUALISIEREN:
Ein besserer Weg, dies zu tun, wäre, DropDownListFor zu verwenden. Wenn möglich, verlassen Sie sich auf keine magische Zeichenfolge für das Namensattribut
@Html.DropDownListFor(x => x.PriorityID, (IEnumerable<SelectListItem>)ViewBag.PriorityID, new { @class = "dropdown" })
quelle
-select-
mit Ihrer Liste wollen, müssen Sie ihn ändern müssen, wie@Html.DropDownList("PriorityID", (IEnumerable<SelectListItem>)ViewBag.PriorityID, String.Empty, new { @class="dropdown" })
Wie die Signatur aus der Fehlermeldung impliziert, muss das zweite Argument ein IEnumerable sein, genauer gesagt ein IEnumerable von SelectListItem. Es ist die Liste der Auswahlmöglichkeiten. Sie können den SelectList-Typ verwenden, der eine IEnumerable von SelectListItem ist. Für eine Liste ohne Auswahlmöglichkeiten:
@Html.DropDownList("PriorityID", new List<SelectListItem>(), new {@class="textbox"} )
Für eine Liste mit einigen Auswahlmöglichkeiten:
@Html.DropDownList( "PriorityID", new List<SelectListItem> { new SelectListItem { Text = "High", Value = 1 }, new SelectListItem { Text = "Low", Value = 0 }, }, new {@class="textbox"})
Vielleicht kann dieses Tutorial hilfreich sein: So erstellen Sie eine DropDownList mit ASP.NET MVC
quelle
new List<SelectListItem>()
. SelectList ist eigentlich eine Hilfsklasse, mit der Sie eine Liste mit Auswahlmöglichkeiten aus einer anderen Liste von Objekten erstellen können. Siehe das Tutorial, das ich meinem Beitrag hinzugefügt habe.Wenn Sie mehr als ein Argument hinzufügen, führen Sie eine Dropdown-Liste in Asp.Net MVC durch. Wenn Sie den Datensatz bearbeiten oder den Wert im Ansichtsbeutel übergeben.
Verwenden Sie dies, es wird Arbeit sein: -
@Html.DropDownList("CurrencyID",null,String.Empty, new { @class = "form-control-mandatory" })
quelle
Es gibt einige Optionen im Konstruktor-Look, wenn Sie keine Dropdown-Liste haben und eine CSS-Klasse einfügen möchten, die Sie gerne verwenden können
@Html.DropDownList("Country", null, "Choose-Category", new {@class="form-control"})
In diesem Fall ist Land der Name Ihres Dropdowns. Null bedeutet, dass Sie keine generische Liste von Ihrem Controller übergeben. "Kategorie auswählen" ist das ausgewählte Element und das letzte in der CSS-Klasse, wenn Sie keine Standardoption auswählen möchten Ersetzen Sie einfach "Kategorie auswählen" durch ""
quelle
Sie können dies mit jQuery tun
$("select").addClass("form-control")
Wählen Sie hier das HTML-Tag Select und den Namen der Form-Control-Klasse
@Html.DropDownList("SupplierId", "Select Supplier")
und hier ist SupplierId ViewBagList, Select Supplier is - Display Name
quelle
Probieren Sie es einfach aus
@Html.DropDownList("PriorityID", (IEnumerable<SelectListItem>)ViewBag.PriorityID, new { @class="dropdown" })
Wenn Sie jedoch einen Standardwert oder keinen Optionswert möchten, müssen Sie diesen versuchen, da
String.Empty
für Sie kein Wert ausgewählt wird, der-select-
als Standardoption fungiert@Html.DropDownList("PriorityID", (IEnumerable<SelectListItem>)ViewBag.PriorityID, String.Empty, new { @class="dropdown" })
quelle
Versuchen Sie den folgenden Code:
@Html.DropDownList("ProductTypeID",null,"",new { @class = "form-control"})
quelle
Versuche dies:
@Html.DropDownList( "country", new[] { new SelectListItem() { Value = "IN", Text = "India" }, new SelectListItem() { Value = "US", Text = "United States" } }, "Country", new { @class = "form-control",@selected = Model.Country} )
quelle
Sie können dies einfach tun:
@Html.DropDownList("PriorityID", null, new { @class="form-control"})
quelle
Versuche dies
@Html.DropDownList("Id", null, new { @class = "ct-js-select ct-select-lg" })
quelle