Domanda

Ciao, ho il seguente codice in tutta la mia app ma con solo due campi non funziona.

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

Il seguente test viene eseguito e superato:

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

Il mio controller ha il seguente aspetto:

        TryUpdateModel(siteConstruction);

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

Ho altri campi obbligatori nel modello e sono OK. Questo campo è nullo (ho selezionato) ma non rende il modello non valido, quindi nessuna convalida e un errore durante il salvataggio.

My View

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

Ho guardato il mio .dbml (da Linq a SQl), l'ortografia sembra ok.

Mi manca qualcosa di semplice - per favore, impazzendo.

Grazie

Davy

È stato utile?

Soluzione

[MetadataType (typeof (SiteConstructionMetadata))] sopra la mia classe parziale, l'ho dato per scontato, ce l'avevo lì.

La prossima volta, invece di pubblicare snippet, penso che pubblicherò tutto - smeone wous lo ha notato abbastanza rapidamente.

Davy

Altri suggerimenti

Assicurati di rendere DataAnnotationsModelBinder anche il raccoglitore di modelli predefinito. Aggiungi quanto segue nel tuo Global.asax.cs :

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

e assicurati di aver fatto riferimento all'assembly System.ComponentModel.DataAnnotations.dll nel tuo progetto. Vedi questo tutorial per maggiori dettagli.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top