Domanda

Ho costruito una pagina utilizzando ASP.NET MVC 2 utilizzando KnockoutJS, KnockoutJS Mapping plug ,, e jQuery 1.7.1. Mi piacerebbe essere in grado di utilizzare anche il plugin KnockoutJS Validation (trovato qui ). Tuttavia ho bisogno di avere server e la validazione lato client accada.

E 'possibile avere i miei modelli guarda la mappa alla KnockoutJS convalida plug che utilizza il. estendere il metodo ()?

EDIT: Esempio. Accendere automaticamente questo:

[Required]
public string Firstname { get; set; }

In questa:

var viewmodel = {
    firstname: ko.observable().extend({ required: true });
}
È stato utile?

Soluzione

MVC Controls Toolkit ho implementato un motore che consente la solita convalida MVC (annotazioni di dati o qualsiasi altra cosa) sul knockout.js.Both lato client e la validazione lato server possono essere abilitati. Inoltre, knockout può essere utilizzato con aiutanti MVC, alcune legature sono dedotte automaticamente, ecc

Altri suggerimenti

Se si utilizza knockoutjs e jQuery, mi si avvicinò con il seguente metodo molto semplice per fare la validazione lato client di base.

Ovunque si desidera visualizzare il messaggio di errore nella pagina, includere un tag span in questo modo:

<span name="validationError" style="color:Red" 
data-bind="visible: yourValidationFunction(FieldNameToValidate())">
* Required.
</span>

Ovviamente è necessario scrivere "yourValidationFunction" per fare quello che vuoi che faccia. Ha solo bisogno di restituire true o false, vero mezzo visualizzano l'errore.

È possibile utilizzare jQuery per impedire a un utente di procedere se vengono visualizzati errori convalide. Probabilmente già dispone di un pulsante che attiva una funzione javascript per fare un po 'ajax o qualsiasi altra cosa salvare, quindi basta includere questo nella parte superiore di esso:

 if ($("[name='validationError']:visible").length > 0) {
        alert('Please correct all errors before continuing.');
        return;
    }

Questo è molto più semplice e più flessibile rispetto a molte altre soluzioni di validazione là fuori. È possibile posizionare il messaggio di errore dove vuoi, e non c'è bisogno di imparare a utilizzare alcuni convalida biblioteca, e questo metodo funziona indipendentemente dalla tecnologia lato server.

Mi consiglia di utilizzare il costruito nel validazione lato client MVC, potrebbe essere necessario per invocarlo, provate questo:

$.validator.unobtrusive.parse(yourFormElement)

Codice da: https://stackoverflow.com/a/5669575/941536

Non sono sicuro se MVC2 ha validazione lato client discreto però, incerti se un aggiornamento a MVC3 sarebbe un'opzione per voi, se necessario.

La convalida plugin funziona nel modo in cui si estende l'osservabili si desidera convalidare.

Non importa se vengono creati da mappature, basta creare una funzione che si esegue dopo la mappning è stato fatto e aggiungere tutte la convalida che si desidera.

In alternativa, se si desidera è possibile utilizzare le associazioni di convalida. Leggere il file Readme su Github per la convalida eliminazione diretta e si vede come lo fanno.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top