2011-09-27 17 views
5

Vorrei associare una DropDownList in un intero come segue:MVC3 - Binding DropDownList a int - valore desiderato sempre

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

Ovviamente nel caso di cui sopra sto permettendo per un valore di default (vuoto) in modo che nessun valore è scelto di default. Il mio ViewModel è molto semplice, e non ha alcun annotazioni per queste proprietà

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

Risulta che perché sono vincolanti per una validazione di dati int è costretto conseguente data-val * attributi generati nel mio html e causando la convalida del mio lato client fallisce se non scelgo un'opzione. L'alternativa sembra essere vincolante per una stringa piuttosto che per un int e quindi per analizzare la stringa sul serveride - tuttavia, sembra una specie di hacker e mi chiedo se ci sia un'alternativa che mi permetta di legarsi a un int, con un valore, ma non di default (vuoto) fanno di questo campo obbligatorio

Grazie

JP

risposta

11

si consiglia di utilizzare un intero annullabile in nel vostro modello di vista di legarsi a se la discesa ilst potrebbe avere un default valore:

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

E se si desidera applicare la convalida che l'utente seleziona in realtà un valore di decorare con l'attributo richiesto:

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

uffa io sono un idiota ... e io odio essere un idiota. Se solo potessi ottenere l'ultima mezz'ora della mia vita ... –

+0

@JP., Felice di poterti aiutare. Ci sono ancora alcuni problemi o potresti chiudere questa domanda? –

+0

Ho dovuto aspettare qualche minuto prima che mi permettesse di chiudere. Risposta accettata ora - grazie per il vostro aiuto !! –

Problemi correlati