7
arbeiten

ich MVC bin mit 5.MVC Dropdownlist ausgewählt Wert nicht

Ich habe meine ViewBag für die Liste als

ViewBag.TitleList = new SelectList((new string[] { "Mr", "Miss", "Ms", "Mrs" }), contact.Title); 
//contact.Title has selected value. 

dann habe ich versucht, das Array Umwandlung zu SelectListItem (to no avail)

Ansicht auf es aussieht wie

@Html.DropDownListFor(model => model.Title, ViewBag.TitleList as SelectList, "Select") 

auch versuchte ich

@Html.DropDownList("Title", ViewBag.TitleList as SelectList, "Select") 

Die Liste wird erfolgreich geladen, aber die Selected Value is Not selected. Wie behebt man dieses Problem?

Update Der Schuldige war ViewBag.Title passend zu meinem Model.Title. Benannte meine Modelleigenschaft in etwas anderes um und es funktionierte. Arrgh!

+2

Mit '@ Html.DropDownListFor()', wenn der Wert von 'model.Title' ist (sagen wir) "Miss", dann die zweite Option wird ausgewählt (Sie brauchen den 2. Parameter im Konstruktor 'SelectList' nicht). Überprüfen Sie, ob der Wert von 'Title' genau mit einem der Optionswerte übereinstimmt. –

+0

Ja, der Wert in Titel stimmt mit denen in der Liste überein – Ruchan

+0

Möglicherweise ist dies ein Duplikat für diesen Beitrag. [Mögliche doppelte] [1] [1]: http://stackoverflow.com/questions/5858679/preselect-items-in-multiselect-listbox-mvc3-razor – Tobias

Antwort

9

Sollwert der Title Eigenschaft in der Steuerung:

ViewBag.TitleList = new SelectList(new string[] { "Mr", "Miss", "Ms", "Mrs" }); 
viewModel.Title = "Miss"; // Miss will be selected by default 

Ein weiterer möglicher Grund (und die richtige, basierend auf den Kommentaren unten) ist, dass ViewData["Title"] durch einen anderen Wert überschrieben wird. Ändern Sie den Namen der Title Eigenschaft in einen anderen und alles sollte funktionieren.

+0

Der Titel hat bereits beim Laden einen Wert. Es ist Teil der Editiermethode. – Ruchan

+0

@Ruchan, dann stimmt der Wert von 'Title' nicht mit einem dieser 4 Werte überein (vielleicht nach Leerraum suchen), oder du versuchst das in einer Schleife –

+4

@Ruchan, ist es eine Chance, dass du den Titel einstellst der Seite mit 'Title' als Schlüssel:' ViewBag.Title = "Edit" '? Versuchen Sie, den Eigenschaftsnamen in einen anderen Namen zu ändern. – Zabavsky

2

Wenn ein Wert nicht angegeben ist (d. H. "Id"), verhält sich DropDownListFor manchmal nicht richtig. Versuchen Sie folgendes:

public class FooModel 
{ 
    public int Id { get; set; } 
    public string Text { get; set; } 
} 

var temp = new FooModel[] 
{ 
    new FooModel {Id = 1, Text = "Mr"}, new FooModel {Id = 2, Text = "Miss"}, 
    new FooModel {Id = 3, Text = "Ms"}, new FooModel {Id = 4, Text = "Mrs"} 
         }; 
ViewBag.TitleList = new SelectList(temp, "Id", "Text", 2); 

EDIT: andere sololution

var temp = new [] 
{ 
    new SelectListItem {Value = "Mr", Text = "Mr"}, new SelectListItem {Value = "Miss", Text = "Miss"}, 
    new SelectListItem {Value = "Ms", Text = "Ms"}, new SelectListItem {Value = "Mrs", Text = "Mrs"} 
}; 
ViewBag.TitleList = new SelectList(temp, "Value", "Text", "Miss"); 
+0

Sehen Sie Ivan, wenn Sie ein Problem selbst lösen, heißt es _solution_. –

Verwandte Themen