2 votes

Données Annotations Extensions MV3 ModelState non valide

J'utilise DataAnnotationsExtensions de http://dataannotationsextensions.org/

avec un exemple tiré d'ici http://weblogs.asp.net/srkirkland/archive/2011/02/23/introducing-data-annotations-extensions.aspx

Code du contrôleur

    public ActionResult Create(Dog dog, HttpPostedFileBase Picture)
    {
        Regex rgx = new Regex(@"^.*\.(jpg|gif|jpeg|png)$");
        Match m = rgx.Match(Picture.FileName);

        if (rgx.IsMatch(Picture.FileName))
            {
                if (ModelState.IsValid)
                {

Code du modèle

[FileExtensions("png|jpg|jpeg|gif", ErrorMessage = "Only jpg jpeg gif or png files allowed")]
        public string Picture { get; set; }

et le code du rasoir

@Html.TextBoxFor(model => model.Picture, new { type = "file" })
@Html.ValidationMessageFor(model => model.Picture)

Tout ce que je fais échoue à chaque fois à

if (ModelState.IsValid)

Si je supprime l'annotation FileExtensions, tout fonctionne bien, mais je n'ai plus la possibilité de bloquer les types de fichiers que je ne veux pas.

Je suis allé jusqu'à vérifier le code des extensions d'annotations de données situé ici https://github.com/srkirkland/DataAnnotationsExtensions/blob/master/DataAnnotationsExtensions/FileExtensionsAttribute.cs

et je n'arrive toujours pas à trouver l'origine du problème.

0voto

Tommy Points 17332

Je pense que le classeur de modèles est confus avec une propriété nommée "Picture" sur votre modèle et une propriété "Picture" sur votre modèle. HttpPostedFileBase nommé "Picture".

Si vous mettez à jour votre HttpPostedFileBase à autre chose que "Picture", le modèle de classeur devrait se comporter normalement. Exemple :

public ActionResult Create(Dog dog, HttpPostedFileBase UploadedPicture)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X