Pregunta

He estado construyendo una página usando ASP.NET MVC 2 usando knockoutjs, complemento de mapeo knockoutjs ,, y jQuery 1.7.1. Me gustaría poder usar también el complemento de validación de knockoutjs (encontrado aquí). Sin embargo, necesito que se produzca la validación del servidor y el lado del cliente.

¿Es posible que el mapa de los modelos de mi vista al Complemento de validación de knockoutjs ¿Qué usa el método .extend ()?

Editar: ejemplo. Gire automáticamente esto:

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

Dentro de esto:

var viewmodel = {
    firstname: ko.observable().extend({ required: true });
}
¿Fue útil?

Solución

En el Kit de herramientas de controles MVC Implementé un motor que habilita la validación habitual de MVC (anotaciones de datos o lo que sea) en knockout.js.both lado del cliente y validación del lado del servidor se pueden habilitar. Además, Knockout se puede usar con ayudantes de MVC, algunos enlaces se infieren automáticamente, etc.

Otros consejos

Si está utilizando knockoutjs y jQuery, se me ocurrió el siguiente método muy simple para hacer validación básica del lado del cliente.

Donde quiera que desee mostrar el mensaje de error en su página, incluya una etiqueta de tramo como esta:

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

Obviamente, debe escribir "Your ValidationFunction" para hacer lo que quiera que haga. Solo necesita devolver verdadero o falso, verdadero significa mostrar el error.

Puede usar jQuery para evitar que un usuario continúe si se muestran algún error de validación. Probablemente ya tenga un botón Guardar que desencadena una función de JavaScript para hacer un AJAX o lo que sea, así que solo incluya esto en la parte superior:

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

Esto es mucho más simple y más flexible que muchas otras soluciones de validación. Puede colocar su mensaje de error donde quiera, y no necesita aprender cómo usar alguna biblioteca de validación, y este método funciona independientemente de la tecnología del lado del servidor.

Recomiendo usar la validación de MVC Clientide incorporada, es posible que deba invocarla, probar esto:

$.validator.unobtrusive.parse(yourFormElement)

Código de: https://stackoverflow.com/a/5669575/941536

Sin embargo, no estoy seguro de si MVC2 tiene una validación discreta de clientes, sin embargo, no está seguro de si una actualización a MVC3 sería una opción para usted si es necesario.

El complemento de validación funciona en la forma en que extiende los observables que desea validar.

No importa si se crean a partir de mapeos, solo cree una función que ejecute después de que se haya realizado el mapeo y agregue toda la validación que desee.

O, si lo desea, puede usar los enlaces de validación. Lea el ReadMe en GitHub para la validación de Knockout y verá cómo lo hacen.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top