Sto solo imparando MVC e non riesco a capire come gestire il seguente scenario, ho un modulo con un indirizzo di spedizione e un indirizzo di fatturazione. Tutti i campi sono obbligatori. C'è anche una casella di controllo per "Indirizzo di fatturazione è uguale all'indirizzo di spedizione". Il mio problema è che lo stato del modello non è mai valido a meno che non vengano completati entrambi gli indirizzi. Potrei gestirlo abbastanza facilmente con qualche javascript che ha appena aggiunto i valori dall'indirizzo di spedizione ai campi dell'indirizzo di fatturazione, ma se c'è un modo migliore per gestirlo mi piacerebbe sapere. Qualsiasi linea guida su come questo viene comunemente gestito sarebbe grandioso. Grazie!Come gestisco la convalida condizionale in MVC3?
risposta
Ci sono molti modi per gestirlo. Se non si utilizza la convalida sul lato client, è possibile implementare semplicemente IValidatableObject sul modello e sovrascrivere il metodo IsValid() ed eseguire un codice per verificare la validità del modello.
Se si utilizza la convalida sul lato client, è necessario un attributo personalizzato o utilizzare qualcosa come fluent validation.
È possibile raggiungere questo obiettivo con la creazione di un attributo di convalida personalizzato:
http://blogs.msdn.com/b/simonince/archive/2011/02/04/conditional-validation-in-asp-net-mvc-3.aspx
L'essenza di esso è che si crea una nuova classe based off ValidationAttribute
, e IClientValidatable
, sostituire e implementare, se necessario, aggiungere il client- convalida laterale (che è necessario in ogni caso) e applicare l'attributo al campo facoltativo.
O poiché la convalida può essere complessa come si desidera, applicarla su un campo condiviso parzialmente facoltativo, parzialmente richiesto.
Quel ragazzo ha anche un alfa di una libreria che sta scrivendo per rendere più flessibile la convalida MVC. Non l'ho usato da solo, ma you could give it a try.
- 1. Come aggiungere la convalida condizionale in XSD:
- 2. Come utilizzare la convalida Struts2 per la convalida condizionale?
- 3. Convalida condizionale in AngularJS
- 4. Entity Framework/MVC3: disabilita temporaneamente la convalida
- 5. MVC3 rasoio involucro condizionale div
- 6. Convalida condizionale in asp.net MVC4
- 7. Come gestisco la configurazione dell'applicazione in ASP.NET?
- 8. Convalida della regola condizionale in JQuery
- 9. Convalida condizionale sul modello in MVC
- 10. Shoulda/RSpec matchers - convalida condizionale
- 11. condizionale Validazione utilizzando Fluent convalida
- 12. Convalida discreta MVC3: come rimuovere/riattaccare la convalida da un gruppo di elementi?
- 13. MVC3/Convalida client del rasoio Non attiva
- 14. MVC3 Convalida lato client non funzionante
- 15. MVC3 Convalida lato client erratica/incoerente
- 16. MVC3 Convalida forzata di campi nascosti
- 17. MVC3 convalida del client non funziona
- 18. Convalida del modulo Django: rendere condizionale la parola "richiesto"?
- 19. Convalida condizionale delle rotaie nel modello
- 20. Convalida personalizzata/condizionale discreta con Fluent Validation
- 21. jQuery.Validate Convalida condizionale RadioButton e DropDownList
- 22. Come gestisco le eccezioni?
- 23. RequiredIf condizionale di convalida per due variabili in MVC4
- 24. Come gestisco Login/Logout in Caliburn.Micro?
- 25. Come gestisco l'evento SessionSecurityTokenReceived in Global.asax?
- 26. Come gestisco Canvas.Top change event in WPF?
- 27. Come gestisco recursive repr() in Python?
- 28. jQuery Convalida il campo obbligatorio condizionale per il plug-in
- 29. jqGrid e MVC3 - Aggiunta della convalida del modello
- 30. @ Html.ValidationSummary funziona per la convalida lato client in MVC3 o MVC4?
I vostri indirizzi di fatturazione e spedizione sono separati? O un modello imballato insieme? – chemicalNova
Sono sullo stesso modello. Entrambe sono proprietà dello stesso tipo. – Mike