Аннотация данных MVC - Обязательное поле не работает - PullRequest
1 голос
/ 13 сентября 2009

Привет У меня в приложении есть следующая кодировка, но только с двумя полями она не работает.

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

Следующий тест проходит и проходит:

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

Мой контроллер выглядит так:

        TryUpdateModel(siteConstruction);

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

У меня есть другие обязательные поля в модели, и они в порядке. Это поле пустое (я проверил), но оно не делает модель недействительной - поэтому нет проверки и ошибка при сохранении.

My View

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

Я посмотрел свой .dbml (Linq to SQl), орфография выглядит нормально.

Я упускаю что-то простое - пожалуйста, схожу с ума.

Спасибо

Дэви

Ответы [ 2 ]

1 голос
/ 13 сентября 2009

[MetadataType (typeof (SiteConstructionMetadata))] выше моего частичного класса, я воспринимал это как должное, он у меня там есть.

В следующий раз, вместо того, чтобы публиковать отрывки, я думаю, что я опубликую все это - крошечные мы заметили это довольно быстро.

Дэви

0 голосов
/ 13 сентября 2009

Убедитесь, что вы также сделаете DataAnnotationsModelBinder подшивкой для модели по умолчанию. Добавьте следующее в Global.asax.cs:

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

и убедитесь, что вы указали сборку System.ComponentModel.DataAnnotations.dll в своем проекте. См. этот урок для более подробной информации.

...