Pregunta

Hola, tengo el siguiente bacalao en toda mi aplicación, pero con solo dos campos no funciona.

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

La siguiente prueba se ejecuta y pasa:

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

Mi controlador se ve así:

        TryUpdateModel(siteConstruction);

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

Tengo otros campos obligatorios en el modelo y están bien. Este campo es nulo (verifiqué) pero no invalida el modelo, por lo que no hay validación y un error al guardar.

Mi vista

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

He mirado mi .dbml (Linq a SQl), la ortografía se ve bien.

Me estoy perdiendo algo simple, por favor, volviéndome loco.

Gracias

Davy

¿Fue útil?

Solución

[MetadataType (typeof (SiteConstructionMetadata))] por encima de mi clase parcial, lo di por sentado que lo tenía allí.

La próxima vez, en lugar de publicar fragmentos, creo que lo publicaré todo: alguien lo habrá visto muy rápido.

Davy

Otros consejos

Asegúrese de hacer que el DataAnnotationsModelBinder también sea el archivador del modelo predeterminado. Agregue lo siguiente en su Global.asax.cs :

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

y asegúrese de haber hecho referencia al ensamblado System.ComponentModel.DataAnnotations.dll en su proyecto. Consulte este tutorial para obtener más detalles.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top