Несколько вопросов ... ModelState.IsValid и сгруппированные значения CheckBox - PullRequest
2 голосов
/ 03 февраля 2012

Используя ASP.NET MVC, когда я создаю свою модель, затем создается контроллер, основанный на модели с операциями CRUD, представления CRUD. Я добавил некоторый код, используя Fluent API, чтобы требовать определенные поля, но по какой-то причине ModelState.IsValid проходит, даже если эти поля не заполнены. Что определяет, проходит это или нет? Я думал, что это основано на типах данных свойств вашей модели и других вещах, таких как требование или максимальная длина, и т. Д ....

Кроме того, я вручную добавил код, чтобы получить список категорий из базы данных и создать флажок для каждого из них в представлении. Это свойство навигации для модели Project, в которой существует отношение многие-многие. Чтобы получить группу проверенных значений в методе Create (Project project) в контроллере, который я использую:

var selected = Request["categories"].Split(',');

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

1 Ответ

1 голос
/ 03 февраля 2012

Я добавил код , используя Fluent API , чтобы требовать определенные поля, но для по какой-то причине ModelState.IsValid проходит, даже если эти поля не завершено.

ASP.NET MVC ничего не знает о Fluent API Entity Framework и не оценивает эту конфигурацию. Вы можете использовать только аннотации данных, которые MVC распознает:

[Required]
public string SomeProperty { get; set; }
<ч />

... как я могу определить, что это не имеет никаких значений, чтобы я мог сделать что-то еще однажды обнаружено?

Не уверен, правильно ли я понимаю, но скажу:

var categories = Request["categories"];
if (categories != null)
{
    var selected = categories.Split(',');
    // ...
}
else
{
    // do something else
}
...