Ho una situazione in cui sto caricando un'immagine che l'utente ha selezionato dal suo file system locale. Il mio modulo a mio avviso, in pratica ha due pulsanti di invio. Uno è usato per inviare normalmente il modulo e tutte le convalide vengono eseguite. Il 2 è solo per caricare l'immagine, nel qual caso non voglio ancora convalidare.MVC3 Rimuovi errori ModelState
sono riuscito a disattivare la convalida lato client, dando il mio 'Caricare l' immagine' pulsante di invio un un valore di classe di "stile-name cancel", in modo da
<input type="submit" name="UploadImageButton" value="Upload Image" class="style-name cancel" />
Ora, quando mi post indietro, il mio modello ha una proprietà UploadImageButton, quando questo pulsante viene cliccato, popola questa proprietà (il nome dell'input corrisponde alla proprietà). In questo modo, so se il modulo è stato inviato dal mio vero pulsante Invia o da UploadImageButton.
La mia domanda è questa ... Come disattivare la convalida ServerSide? Non voglio che le informazioni di riepilogo convalida vengano visualizzate quando l'utente fa clic su questo pulsante. So che è possibile aggiungere errori di modello personalizzati utilizzando questo
Sto cercando un mezzo per rimuovere gli errori del modello. È possibile?
EDIT:
Ecco quello che mi si avvicinò con:
foreach (var key in ModelState.Keys.ToList().Where(key => ModelState.ContainsKey(key))) {
//ModelState.Remove(key); //This was my solution before
ModelState[key].Errors.Clear(); //This is my new solution. Thanks bbak
}
Perché stai facendo un 'Dove (chiave => ModelState.Keys.. Contiene (chiave)) '' Sembra che la clausola Where sia ridondante, poiché ogni chiave in ModelState.Keys avrà il proprio ModelState.Keys.Contains (chiave) restituito true. –
Ho aggiornato la domanda e il testo, per utilizzare il metodo più corto sul ModelState.ContainsKey, anche se il tuo errore nella tua ipotesi. Questi stanno facendo la stessa cosa. –
Spiacente, potrei aver spiegato male o frainteso la tua risposta. Hai ragione che 'ModelState.ContainsKey (chiave)' e 'ModelState.Contains (chiave)' fanno la stessa cosa, ma il mio punto è che tutti i valori in 'ModelState.Keys.ToList()' saranno per natura contenuti in 'ModelState', quindi l'intera clausola' Where' è ridondante e rallenterà le prestazioni. Piccola cosa, però. –