Elemente im Multiselect-Listenfeld (MVC3 Razor) vorselektieren
Ich habe ein problem mit der Vorauswahl von Elementen in einer listbox.
Ich bin mit razor view engine mit mvc 3. Ich weiß, es gibt ein paar Beiträge mit dem gleichen Problem, aber Sie arbeiten nicht für mich.
Code in der Klasse:
public class Foo{
private int _id;
private string _name;
public string Name{
get{
return _name;
}
public int Id {
get{
return _id;
}
}
Code in Modell:
public class FooModel{
private readonly IList<Foo> _selectedFoos;
private readonly IList<Foo> _allFoos;
public IList<Foo> SelectedFoos{
get{ return _selectedFoos;}
}
public IList<Foo> AllFoos{
get{ return _allFoos;}
}
}
Code in cshtml:
@Html.ListBoxFor(model => model.Flatschels,
Model.AllFlatschels.Select(fl => new SelectListItem {
Text = fl.Name,
Value = fl.Id.ToString(),
Selected = Model.Flatschels.Any(y => y.Id == fl.Id)
}), new {Multiple = "multiple"})
Ich versuchte viele andere Dinge, aber nichts funktionierte. Hoffe mir kann jemand helfen.
InformationsquelleAutor der Frage Tobias | 2011-05-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich kann nicht wirklich erklären warum, aber ich habe es geschafft es zum laufen zu bringen. Entweder funktioniert:
Das problem scheint zu sein, dass die Selected-Eigenschaft auf SelectListItem wird ignoriert, und stattdessen die
ToString()
(!) Methode aufgerufen wird, also, wenn Sie benötigen, fügen Sie diese zu IhremFoo
Klasse:Ich vermute, es hat etwas damit zu tun, dass man in der Lage zu bleiben in den Anforderungen (was wird abgeflacht werden, um Zeichenketten übergeben werden, die über die Leitung), aber es ist ein bisschen verwirrend!
InformationsquelleAutor der Antwort Danny Tuppeny
In MVC5, die Sie direkt verwenden können ListBoxFor mit multiselect. Stellen Sie sicher, dass beim laden der Ansicht, Ihre selectedItem haben sollte, Liste der Elemente.
InformationsquelleAutor der Antwort John Kuriakose