Con MVC3 sono disponibili due nuovi meccanismi per l'aggiunta della convalida personalizzata. Queste sono (1) sottoclasse ValidationAttribute o (2) implementano IValidatableObject.IValidatableObject in MVC3 - validazione lato client
ValidationAttribute consente di aggiungere la convalida lato client relativamente semplicemente implementando IClientValidatable (e registrando un nuovo adattatore e metodo tramite jQuery).
IValidatableObject è più adatto a requisiti di convalida una tantum in cui il riutilizzo non è un'opzione. Porta anche a un codice leggermente più semplice. Sarebbe quindi la mia scelta per una serie di scenari. Sfortunatamente, non vedo un modo semplice per implementare la validazione lato client usando questo metodo.
Quindi la domanda è cosa mi manca e come si ottiene la convalida JS quando si utilizza IValidatableObject?
Ciò significa che non esiste un modo semplice per agganciare una convalida javascript personalizzata sulla vista? Mi piacerebbe avere una semplice funzione che potrei collegare al meccanismo di validazione del lato client esistente. – pauloya
[Un post forum ASP.NET] (http://forums.asp.net/post/5593598.aspx): * la validazione jquery valida solo i campi di input (nessuna convalida del livello del modello), quindi non esiste una mappatura naturale per la classe validazione di livello. Un modo comune per aggiungere la convalida del livello del modello è aggiungere un campo nascosto e convalidare il livello del modello al livello nascosto. * Http://stackoverflow.com/a/5817958/11683 dimostra questo approccio - con l'eccezione che il campo non è nascosto . – GSerg
L'utilizzo di un attributo [Remote] sul modello potrebbe aiutare; leggi qui: http://msdn.microsoft.com/en-us/library/gg508808%28VS.98%29.aspx – Tohid