2011-09-27 19 views
5

chciałabym powiązać dropdownlist do liczby całkowitej w następujący sposób:MVC3 - Binding DropdownList int - Wartość zawsze wymagane

@Html.DropDownListFor(m => m.ProductID, Model.AllProducts, "") 

Oczywiście w powyższym przypadku mam umożliwiającej domyślnego (puste) wartości, tak że żadna wartość nie jest wybrana domyślnie. Moje ViewModel jest bardzo proste i nie ma żadnych adnotacji dla tych właściwości

public SelectList AllProducts {get;set;} 
public int ProductID {get;set;} 

Wydaje się, że ponieważ jestem wiążący do walidacji danych int jest zmuszony w wyniku danych-Val * atrybuty generowane w moim html i powodując moja walidacja po stronie klienta nie powiedzie się, jeśli nie wybiorę opcji. Alternatywa wydaje się być wiążąca dla ciągu znaków, a nie int, a następnie analizowania łańcucha na stronie serwera - jednak wydaje się to być trochę hackish i zastanawiam się, czy istnieje alternatywa, która pozwoli mi powiązać int, z domyślna wartość (pusty), ale nie czyni to pole obowiązkowe

Dziękuję

JP

Odpowiedz

11

należy użyć zerowalne liczbą całkowitą w widoku modelu do związania jeżeli spadek w dół ilst może mieć domyślne wartość:

public SelectList AllProducts { get; set; } 
public int? ProductID { get; set; } 

A jeśli chcesz wymusić sprawdzanie, czy użytkownik faktycznie Wybiera wartość atrybutu ozdobić Wymagane:

public SelectList AllProducts { get; set; } 
[Required] 
public int? ProductID { get; set; } 
+0

Fuj jestem idiotą ... a ja nienawidzę być idiotą. Gdybym tylko mógł odzyskać ostatnie pół godziny mojego życia ... –

+0

@JP., Cieszę się, że mogłem pomóc. Czy są jeszcze jakieś problemy lub możesz zamknąć to pytanie? –

+0

Musiałem poczekać kilka minut, zanim pozwoli mi to zamknąć. Odpowiedź zaakceptowana teraz - dziękuję za pomoc !! –