Zasadniczo chcę wstawić element na początku SelectList z domyślną wartością 0 i wartością tekstową „- Select One -”
Coś jak
SelectList list = new SelectList(repository.func.ToList());
ListItem li = new ListItem(value, value);
list.items.add(li);
Czy można to zrobić?
asp.net-mvc
selectlist
GEOCHET
źródło
źródło
SelectList
naprawdę wydaje się być tylko pomocnikiem do wiązania danych bezpośrednio z elementami. Jeśli dodajesz elementy ręcznie, użyjList<SelectListItem>
zamiast tego.Odpowiedzi:
Naprawdę nie ma takiej potrzeby, chyba że nalegasz na wartość 0. Rozszerzenie HtmlHelper DropDownList umożliwia ustawienie etykiety opcji, która pojawia się jako wartość początkowa w selekcji z wartością null. Po prostu użyj jednego z podpisów DropDownList, które mają etykietę opcji.
źródło
@Html.DropDownListFor( m => m.MenuSelection, (IEnumerable<SelectListItem>)ViewBag.Menu, "Select One", null )
w tym wartość null,htmlAttributes
aby uniknąć pomylenia z podpisem który przyjmuje wyrażenie, wyliczenie menu i obiekt (htmlAttributes).dataValueField
i,dataTestField
które sprawiły, że to nie zadziałało podczas dodawania wartości optionLabel. Prawdopodobnie mogłoby to zadziałać przy odrobinie większym wysiłku, ale użyłem tylko jednego z alternatywnych rozwiązań. Mimo wszystko dzięki!Mam to do pracy, wypełniając SelectListItem, konwertując na Listę i dodając wartość o indeksie 0.
źródło
To jest możliwe.
źródło
Podobała mi się odpowiedź @ AshOoO, ale podobnie jak @Rajan Rawal musiałem zachować wybrany stan elementu, jeśli taki istnieje. Więc dodałem moje dostosowanie do jego metody
AddFirstItem()
źródło
Powinno zrobić to, czego potrzebujesz, po prostu wyślij swoją listę wyboru, a zwróci listę wyboru z pozycją w indeksie 0
Możesz dostosować tekst, wartość lub nawet indeks elementu, który chcesz wstawić
źródło
Tutaj pomocnik html dla Ciebie
źródło
Metoda .ToList (). Insert (..) umieszcza element na liście. Można określić dowolną pozycję. Po liście ToList po prostu dodaj .Insert (0, "- - Pierwsza pozycja - -")
Twój kod
Nowy kod
źródło
Może nie brzmi to zbyt elegancko, ale zwykle robię coś takiego:
źródło
Okej lubię czysty kod, więc zrobiłem z tego metodę rozszerzającą
Użycie (na przykład):
źródło
Ponieważ ta opcja może potrzebować na wiele różnych sposobów, doszedłem do wniosku, aby opracować obiekt, aby można go było wykorzystać w różnych scenariuszach i przyszłych projektach
najpierw dodaj tę klasę do swojego projektu
Teraz w akcji kontrolera możesz to zrobić
I na koniec w widoku będziesz kodować w ten sposób.
źródło
Obejściem problemu jest użycie odpowiedzi @ tvanfosson (wybrana odpowiedź) i użycie JQuery (lub JavaScript), aby ustawić wartość opcji na 0:
Mam nadzieję że to pomoże.
źródło
Spróbuj czegoś podobnego do następującego kodu:
źródło
Nie wiem, jeśli ktoś inny ma lepszą opcję ...
źródło