2016-01-29 1 views
9

ich Code unten bin mitmvc 5 Select aus der Tabelle mit leeren Wert für Dropdown

ViewBag.Id= new SelectList(db.TableName.OrderBy(x => x.Name),"Id","Name") 

Ansicht

@Html.DropDownList("Id", null, htmlAttributes: new { @class = "form-control" }) 
ein Dropdown

Controller erstellen

Meine Frage ist, Wie kann ich SelectList ändern, um ein leeres Element hinzuzufügen, so dass ein leeres Element aut ist omatisch hinzugefügt für DropDownList.

Danke.

Antwort

14

Verwenden Sie eine der overloads, die eine optionLabel

@Html.DropDownListFor(m => m.ID, (SelectList)ViewBag.MyList, "Please select", new { @class = "form-control" }) 

oder wenn Sie nicht wollen,

@Html.DropDownList("ID", (SelectList)ViewBag.MyList, "Please select", new { @class = "form-control" }) 

die stark typisierte Methoden verwenden, akzeptiert, die die erste Option mit dem Text angegeben hinzufügen, werden in der 3. Parameter und mit einem null Wert

<option value="">Please Select</option> 
+0

Danke für die Antwort. Also kann ich die SelectList nicht ändern, um das gewünschte Ergebnis zu erhalten? – ary

+0

Nein, aber warum möchten Sie? Du könntest immer dein eigenes 'IEnumerable '' erstellen und fügen das erste mit 'Text =" ... "' und 'Value =" "' ein aber das macht wirklich keinen Sinn –

+0

Da ich mich im Controller zu entscheiden habe habe keinen Leerwert von nicht. Es wird Fälle geben, in denen es keinen Leerwert geben wird. – ary

1

Sie können diese Überlastung verwenden:

public static MvcHtmlString DropDownList(this HtmlHelper htmlHelper, string name, IEnumerable<SelectListItem> selectList, string optionLabel, object htmlAttributes); 

wo optionLabel ist der Text für einen Standard leeres Element.

+0

Können Sie ein Beispiel geben Sie bitte. Außerdem möchte ich den leeren Wert "" mit der ID say -1 zu SelectList hinzufügen. Vielen Dank. – ary

+2

Zum Beispiel: '@ Html.DropDownList (" Id ", null, htmlAttributes: neu {@class =" form-control ", optionLabel:" [nicht ausgewählt] "})' Wenn der Text "[nicht ausgewählt]" ist ausgewählt, dann erhalten Sie _null_ als Wert. – romanoza

+0

Ich erhalte den Fehler "Die beste Überladung für" DropDownList "hat keinen Parameter mit dem Namen optionLabel" – ary

0

In meinem Projekt arbeitet diese Strings

-Controller

ViewBag.TagHfoFlagId= new SelectList(db.TableName.OrderBy(x => x.Name),"Id","Name") 

Ansicht

@Html.DropDownList("TagHfoFlagId", null,"--Select Name--", htmlAttributes: new { @id = "tags" })