Pregunta

No puedo conseguir XVal validación trabajar con ViewModels inflexible.

Cada método en el XVal parece querer un prefijo que no se utiliza cuando se trata de ViewModels inflexible.

Mi vista contiene código similar al siguiente:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<ContactForm>" %>
<%= Html.TextBox("firstName", Model.FirstName) %>

Y el siguiente código va en el controlador:

try
{
    var theModel = form.ToModel();
    _contactRepository.Save(theModel);
}
catch (RulesException ex)
{
    ex.AddModelStateErrors(ModelState, string.Empty); // Passing string.Empty for prefix, since I don't use prefixes.
}

return View(form);

Sin embargo, el código anterior no funciona. sin duda me he perdido algo, pero no sé qué. Esta es mi primera vez usando XVal.

agradecido por cualquier ayuda!

¿Fue útil?

Solución

Creo que el problema está en el hecho de que usted no usa los prefijos. Si se depura el ModelState se puede ver validaciones para cosas como ".FirstName" a pesar de que debería ser como 'Nombre'. Debido a que el cliente resúmenes de validación lado y esas cosas no muestra los mensajes de error de validación.

Creo que esto es un error en XVal.

Otros consejos

A punto de Adrian, que no podemos ver si está utilizando DataAnnotations en su modelo de vista, o si está usando cualquier tipo de corredor se describe en este artículo . Tendrá que utilizar un algo así como el DataAnnotationsValidationRunner se menciona para ejecutar la validación para cada propiedad de su modelo de vista según lo especificado por la validación de atributos que utiliza (por ejemplo, Obligatorio, rango, etc.).

Básicamente los pasos serían los siguientes:

  1. Recuperar su vista del modelo inflexible de tipos actualizado de la forma.
  2. Pasar ese modelo a su DataAnnotationsValidationRunner, la recogida de los errores que resultan
  3. Si hubo algún error (objetos errorInfo), tirarlos como RulesException
  4. Coger el RulesException y añadir las excepciones de validación para el modelo mediante el método AddModelStateErrors de la excepción
  5. Compruebe si ModelState.IsValid, y si no lo es, representan su punto de vista, que gracias a su manejo de excepciones tendrán ahora los errores ligados a su modelo de vista. Tendrá que asegurarse de que tiene las llamadas de ayuda ValidationMessage HTML apropiados en su lugar, también referenciado por el artículo enlazado.

Tu anuncio a no lo suficientemente concisa para darme cuenta de lo que va mal, pero se puede encontrar un sitio web de demostración completamente de trabajo al final de este artículo de blog . El artículo también describe todo lo que tiene que hacer paso a paso, así que esto debería ayudarle a obtener XVal corriendo.

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