Vous devenez fou maintenant. J'ai une solution MVC que j'ai mise à jour de MVC 1 à 2. Tout fonctionne bien ... sauf la validation!Problème d'annotations de données MVC 2
Voici quelques code:
Dans le contrôleur:
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Security.Principal;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;
using System.Web.UI;
using MF.Services.Authentication;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
namespace MF.Controllers
{
//basic viewmodel
public class LogOnViewData
{
[Required]
public string UserName { get; set; }
[Required]
public string Password { get; set; }
}
[HandleError]
public class AccountController : Controller
{
[HttpPost]
public ActionResult LogOn(LogOnViewData lvd, string returnUrl)
{
if (ModelState.IsValid)
{
//do stuff - IsValid is always true
}
}
}
}
Le ModelState est toujours valide. Le modèle est correctement rempli cependant. Par conséquent, si je laisse vide à la fois le nom d'utilisateur et le mot de passe et que je publie le formulaire, l'état du modèle est toujours valide. Argh!
Informations supplémentaires: utilisation de la carte de structure pour IoD. Auparavant, avant la mise à niveau vers MVC 2 était l'utilisation de la bibliothèque d'annotations de données MS ainsi avait dans mon global.asax.cs: ModelBinders.Binders.DefaultBinder = new Microsoft.Web.Mvc.DataAnnotations.DataAnnotationsModelBinder();
Avoir enlevé cela maintenant. Je suis sûr que je fais quelque chose de vraiment basique et faux. Si quelqu'un pouvait le signaler, ce serait merveilleux. Cheers
Oh je vois - merci. Cela a vraiment du sens :) Cependant, j'ai lancé un tout nouveau projet MVC qui a une validation sur l'action de contrôle de connexion qui est presque exactement la même que la mienne. Cela fonctionne bien, bien sûr. Je suis juste un peu perplexe quant à la différence! Merci encore – Louzzzzzz
L'a corrigé! Retiré puis ajouté à nouveau toutes les références dans mon projet web et tout fonctionne comme prévu. – Louzzzzzz