2015-07-08 7 views
7

Attualmente sto permettendo a un elenco di selezione di avere un valore iniziale di "". L'utente può scegliere se compilare questa opzione o lasciarla sul valore predefinito.Come si modifica un valore in ModelState, in modo che sia valido, utilizzando ASP.NET MVC?

Questa selectList funziona su un ID, in cui l'ID viene passato al mio controller. Tuttavia, poiché non viene selezionato un int, ModelState risulta in False poiché l'input era una stringa vuota anziché un int.

Desidero modificare il valore di questa stringa vuota in 0. Ciò comporterebbe che TrueState sia True. Ho esaminato la classe del dizionario ModelState, in modo da poter modificare la coppia chiave, prima che il ModelState sia selezionato. Tuttavia, non sono riuscito a utilizzarlo correttamente.
https://msdn.microsoft.com/en-us/library/system.web.mvc.modelstatedictionary(v=vs.118).aspx

Qualsiasi aiuto sarebbe molto apprezzato.

+0

si fa a non fare la proprietà nullable int come 'public int?' – JamieD77

+0

Si può giocare con il modello legante, è possibile impostare il valore di default per questa proprietà, è possibile aggiungere una coppia di valori con la coppia '" "- 0' aggiunta alla raccolta prima di generare la vista ecc. Domanda è come si crea la vista e come viene trasmesso il modello di dati? – mwilczynski

risposta

4

si può solo rimuovere l'errore

if (ModelState.ContainsKey("{key}")) 
    ModelState["{key}"].Errors.Clear(); 

if (ModelState.IsValid) 
{ 
} 
+1

Grazie, questo è stato molto utile da usare dopo aver cambiato il valore. Come ho trovato quando il valore è cambiato, l'errore correlato rimane ancora. :) – Louise