J'essaie de faire ce qui suit. Utilisez le classeur de modèle par défaut pour lier un objet à partir des valeurs de chaîne de requête.
Si cela échoue, j'essaie ensuite de lier l'objet à partir des valeurs de cookie.Personnalisable Modèle-liant qui tire d'un problème de cookie?
Cependant j'utilise des annotations de données sur cet objet et j'ai les problèmes suivants.
- S'il n'existe aucun paramètre de chaîne de requête, le classeur de modèle par défaut n'enregistre aucune erreur de validation sur les champs obligatoires. Il ne semble même pas déclencher ces validateurs si la propriété elle-même n'est pas dans la collection de chaînes de requête. Comment puis-je changer ce comportement? Je voudrais que les champs requis soient des erreurs s'ils ne sont pas dans la chaîne de requête.
- Si j'ai des erreurs de validation de modèle, je voudrais charger le modèle à partir du cookie, puis revalider l'objet. Je ne suis pas sûr de savoir comment obtenir le classeur modèle pour valider un objet que j'ai moi-même peuplé.
Voici ce que j'ai jusqu'à présent.
public class MyCarBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var myCar = base.BindModel(controllerContext, bindingContext);
if (!bindingContext.ModelState.IsValid)
{
myCar = MyCar.LoadFromCookie();
// Not sure what to do to revalidate
}
return myCar;
}
}
Une aide pour mieux se comporter adéquatement serait grandement appréciée.
Je vois la partie 1 de ma question est résolue par la nouvelle version de asp.net mvc 2. – Jeff
Principalement intéressé par la façon de le faire manuellement la validation du modèle après chargement de l'objet à partir du cookie. – Jeff