У меня есть следующие классы моделей, использующие VS 2017, EF и MVC 5.0
public class Album
{
public virtual int AlbumId { get; set; }
public virtual int GenreId { get; set; }
public virtual int ArtistId { get; set; }
public virtual string Title { get; set; }
public virtual decimal Price { get; set; }
public virtual string AlbumArtUrl { get; set; }
public virtual Genre Genre { get; set; }
public virtual Artist Artist { get; set; }
}
public class Genre
{
public virtual int GenreId { get; set; }
[Display(Name="Genre Name")]
public virtual string Name { get; set; }
public virtual string Description { get; set; }
public virtual List<Album> Albums { get; set; }
}
В представлении у меня есть следующий код
@Html.ValidationSummary(true)
@Html.HiddenFor(model => model.AlbumId)
<div class="form-group">
@Html.LabelFor(model => model.GenreId, "GenreId", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("GenreId", String.Empty)
@Html.ValidationMessageFor(model => model.GenreId)
</div>
</div>
Когда я запускаю код через VS, представление отображается с GenreId с выпадающим списком.Раскрывающийся список содержит пустое значение, в дополнение к значениям, представленным в таблице Жанр.
Когда я выбираю пустой из раскрывающегося списка и нажимаю «сохранить», отображается сообщение об ошибке
Поле GenreId обязательно для заполнения
Я не понимаю, откуда приходит сообщение.
В классе моделей Album
для * нет аннотации Required
1019 * собственность.Так как же ASP.NET MVC узнает, что нужно проверить GenreId
?
Кроме того, почему пустое значение отображается в раскрывающемся списке?