2015-03-04 13 views
5

Sto utilizzando MVC 4 e voglio essere in grado di convalidare una singola riga, da un insieme di righe in una tabella, per garantire che i campi vengano inseriti correttamente e passino la convalida .Convalida lato client al clic del pulsante prima della richiesta AJAX

Gli attributi vengono correttamente applicati sul modello, ad esempio:

[Required] 
[MaxLength(50)] 
[MinLength(5)] 
public string Name {get; set;} 

Ora, sul lato client - non effettuato la validazione lato client prima di chiamare un metodo di AJAX?

Per aggiungere ulteriori complicazioni - Ho un pulsante in cui è possibile aggiungere dinamicamente una riga alla tabella, compilare i campi e infine premere il pulsante di aggiornamento, che eseguirà un POST tramite ajax. Ma prima di questo post, voglio convalidare quella particolare riga sul lato client.

come posso fare questo?

grazie

risposta

7

Finché si sta implementando le aiutanti di convalida Secondo lei, questo è in realtà molto semplice.

var form = $('#form'); 
$.validator.unobtrusive.parse(form); 
form.validate(); 

if (form.valid()) { 
    .... ajax stuff 
} 

Chiamare quanto sopra prima di avviare la richiesta http e si accerterà che il modulo sia convalidato.

+0

grazie! Quindi questo funziona quasi. Ho un problema in cui è richiesta una stringa, ma deve avere un minimo di 5 caratteri e un massimo di 100. se inserisco <5, non ricevo errori di convalida sul lato client ma DO sul lato server. Quando non inserisco nulla nella casella di testo, la validazione su clientide funziona. pensieri? Questo è ciò che viene sputato sul DOM:

+0

Hmm, hai provato a usare '[StringLength (50, MinimumLength = 5)]'? –

+0

Ok, poiché questo è un problema diverso, crea una nuova domanda e includi il tuo codice di visualizzazione, l'azione del tuo controller e il tuo JavaScript rivisto :) Apprezzerei l'accettazione se la mia risposta risolvesse il tuo problema "nessuna convalida"! –