Question

Bonjour, j'ai la morue suivante dans mon application, mais avec seulement deux champs, cela ne fonctionne pas.

[Required]        
public string DevelopmentPM { get; set; }

Le test suivant s'exécute et réussit:

    [TestMethod]
    public void SiteConstruction_MODEL_DevelopmentPM_Is_Required()
    {
        //arrange
        var propertyInfo = typeof(SiteConstructionMetadata).GetProperty    
                           ("DevelopmentPM");

        //act
        var attribute = propertyInfo.GetCustomAttributes(typeof(RequiredAttribute), 
                        true).Cast<RequiredAttribute>().FirstOrDefault();

        //assert
        Assert.IsNotNull(attribute);
    }

Mon contrôleur ressemble à:

        TryUpdateModel(siteConstruction);

        if (!ModelState.IsValid)
           return View(siteConstruction);

J'ai d'autres champs obligatoires dans le modèle et ils sont corrects. Ce champ est nul (j'ai vérifié) mais ne rend pas le modèle invalide - donc pas de validation et une erreur lors de la sauvegarde.

Ma vue

    <li>
        <label for="DevelopmentPM">
            <strong>Development PM:</strong></label>
        <%= Html.TextBox("DevelopmentPM") %>
        <%= Html.ValidationMessage("DevelopmentPM", "*") %>
    </li>

J'ai regardé mon .dbml (Linq à SQl), l'orthographe est correcte.

Il me manque quelque chose de simple, je vous en prie, devenir fou.

Merci

Davy

Était-ce utile?

La solution

[MetadataType (typeof (SiteConstructionMetadata))] au-dessus de ma classe partielle, je l'ai pris pour acquis que je l'avais là.

La prochaine fois, au lieu d’envoyer des extraits, je pense que je vais tout poster - tout simplement, nous l’avons très vite remarquée.

Davy

Autres conseils

Assurez-vous également que DataAnnotationsModelBinder est également le classeur de modèle par défaut. Ajoutez ce qui suit dans votre Global.asax.cs :

ModelBinders.Binders.DefaultBinder = new Microsoft.Web.Mvc.DataAnnotations.DataAnnotationsModelBinder();

et assurez-vous que vous avez référencé l'assembly System.ComponentModel.DataAnnotations.dll dans votre projet. Voir ce didacticiel pour plus de détails.

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