Ненавязчивая проблема проверки с DropDownListFor в ASP.NET MVC 3 - PullRequest
4 голосов
/ 16 февраля 2011

Почему происходит проверка клиента, говорящая о том, что мое поле темы по умолчанию является обязательным, даже если я не указал атрибут [Обязательный] в моей модели?

enter image description here

Модель:

public class Site
{
    public int SiteId { get; set; }

    [Required(ErrorMessage = "*")]
    [LocalizedDisplayName("Title")]
    public string Title { get; set; }

    [Required(ErrorMessage = "*")]
    [LocalizedDisplayName("RootDirectory")]
    public string RootDirectory { get; set; }

    [LocalizedDisplayName("DefaultTheme")]
    public int DefaultThemeId { get; set; } // <-- No required attribute here

    [Required(ErrorMessage = "*")]
    [LocalizedDisplayName("ThemesDirectory")]
    public string ThemesDirectory { get; set; }

    public virtual Theme DefaultTheme { get; set; } // <-- No required attribute here
}

Просмотр:

@Html.DropDownListFor(x => x.DefaultThemeId,
new SelectList(ViewBag.Themes, "ThemeId", "Name"), string.Empty)

Я использую Entity Framework 4 с ADO.NET Entity Data Model и отображаю объекты в POCO в моей модели.

1 Ответ

7 голосов
/ 16 февраля 2011

Это потому, что целые имеют неявное значение.Если вы хотите, чтобы он не имел значения, измените тип на nullable int с помощью int?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...