2009-06-05 20 views
3

Meine Seitenansicht enthält derzeit eine Dropdownliste, die vom Controller an eine Sammlung gebunden wird. Dies funktioniert gut, aber ich möchte ein Element an die Spitze des Dropdownlist einzufügen, die nicht in meiner Sammlung zB die Liste derzeit folgende ArtikelASP.Net MVC Hinzufügen von Objekten zu gebundener Dropdownliste

Open 
Closed 

bekommt Ich möchte eine dritte Option „Alle“ hinzufügen aber ich möchte diese Option meiner Datenbank nicht hinzufügen. In Webforms hätte ich nur das Steuerelement gebunden und dann ein anderes Element eingefügt. Es scheint jedoch, dass dies mit MVC nicht möglich ist. Habe ich recht, wenn ich der Ansicht ein wenig Javascript hinzufügen muss, um dieses neue Element hinzuzufügen, sobald die Dropdownliste gebunden wurde?

Dank

+0

Warum nicht verwenden <% = Html.DropDownList ("Drop-Down", "all")%>? weil auf der Serverseite Wert Null oder leere Zeichenfolge ist, denke ich .. und Sie erhalten die Bedingung. – Vikas

Antwort

9

Nein. Konstruieren Sie Ihre Daten als eine Liste von SelectListItems und stellen Sie sie im Controller bereit.

var list = db.Table 
       .Select(t => new SelectListItem 
           { 
            Key = t.ID.ToString(), 
            Value = t.Name 
           }) 
       .ToList(); 
    list.Insert(0, new SelectListItem { Key = "-1", Value = "All" }); 

    ViewData["TableSelect"] = list; 

Auf der Sichtseite:

<%= Html.DropDownList("TableID", 
          (IEnumerable<SelectListItem>)ViewData["TableSelect"]) %> 
+0

Wir können <% = Html.DropDownList ("TableSelect")%> auch direkt verwenden, wenn derselbe Name in viewdata enthalten ist. – Vikas

+0

Letztlich muss er es auf der Serverseite überprüfen, weil GavD nicht "alle" in DB sein soll – Vikas

+0

Ich kann nicht list.Insert zu arbeiten, was bedeutet, es gibt keine Einfügemethode – Gavin

0

Einfache

Sie können es machen, wie Sie in der Steuerung wünschen.

und übergeben Sie es in viewdata.

andere Option ist direkt in Ansicht Seite.

<%= Html.DropDownList("DropDown","all")%> 

Aber Sie können nur eine Option hinzufügen ..

sicher, dass Sie nicht hinzugefügt Optionen in ur db speichern, nicht wahr? Bevor Sie die Option speichern, überprüfen Sie den Optionswert in Aktion und wenden Sie Ihre Logik an.

+0

Der Wert dafür ist die leere Zeichenfolge und als solche denke ich nicht, dass es zurückgeschickt wird. Wenn Sie einen Wert wie "Alle" anstelle von "Keine" wünschen, müssen Sie die Liste auf der Serverseite (oder mit Javascript) anpassen. – tvanfosson

Verwandte Themen