Question

Je ne peux pas xVal validation pour travailler avec viewmodels fortement typés.

Chaque méthode xVal semble vouloir un préfixe qui n'est pas utilisé pour traiter viewmodels fortement typés.

Mon point de vue contient un code similaire à ceci:

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

Et le code suivant va dans le contrôleur:

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);

Cependant, le code ci-dessus ne fonctionne pas. J'ai sûrement raté quelque chose, mais je ne sais pas quoi. Ceci est ma première fois en utilisant xVal.

Thankful pour toute aide!

Était-ce utile?

La solution

Je pense que le problème est dans le fait que vous n'utilisez pas préfixes. Si vous déboguer le ModelState vous pouvez voir des choses comme validateurs « .FirstName » bien qu'ils devraient être comme « FirstName ». En raison de ce que les résumés de validation côté client et des choses ne montre pas les messages d'erreur de validation.

Je pense que ce bogue dans xVal.

Autres conseils

Pour point de Adrian, nous ne pouvons pas voir si vous utilisez DataAnnotations sur votre modèle de vue, ou si vous utilisez une sorte de coureur décrit dans cet article . Vous aurez besoin d'utiliser quelque chose comme le DataAnnotationsValidationRunner il mentionne pour exécuter la validation sur chaque propriété de votre modèle de vue comme spécifié par la validation que vous utilisez attributs (par exemple, requis, plage, etc.).

En gros les étapes seraient:

  1. Récupérer votre modèle mis à jour de vue fortement typée de la forme.
  2. Faites passer ce modèle à votre DataAnnotationsValidationRunner, la collecte des erreurs qui résultent
  3. S'il y avait des erreurs (objets ERRORINFO), les jeter comme RulesException
  4. Catch the RulesException et ajoutez les exceptions de validation à votre modèle en utilisant la méthode AddModelStateErrors de l'exception
  5. Vérifiez si ModelState.IsValid, et si ce n'est pas, représenter votre point de vue, qui grâce à votre gestion des exceptions auront maintenant les erreurs liées à votre modèle de vue. Vous devez vous assurer que vous avez les appels d'aide html ValidationMessage appropriés en place, également référencé par l'article lié.

Votre annonce à loin d'être assez concis pour moi de savoir ce qui va mal, mais vous pouvez trouver un site de démonstration entièrement fonctionnel à la fin de cet article de blog . L'article décrit également tout ce que vous devez faire étape par étape, ce qui devrait vous aider à obtenir xVal en cours d'exécution.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top