Я уже давно застрял в этой проблеме и не могу найти что-либо в Интернете, которое помогает.Asp.Net MVC 5 Html.DropDownList не проверяет
У меня есть шаблон Html.DropDownList в шаблоне редактора. Я использую этот шаблон в своей форме и не выбираю ничего для раскрывающегося списка. Когда я нажимаю кнопку «Отправить», я ожидаю, что форма сообщит мне, что нужный выпадающий список не имеет выбранного значения, но это не так. Что я делаю не так?
Вот вид модели:
public class RequestCreateViewModel
{
public int ID { get; set; }
public TesterLocationCreateViewModel TesterLocationCreateViewModel { get; set; }
....
public RequestCreateViewModel()
{
}
}
public class TesterLocationCreateViewModel
{
public int ID { get; set; }
[Required]
[UIHint("OEM")]
public string OEM { get; set; }
[Required]
[DisplayName("City")]
public string LocationCity { get; set; }
public TesterLocationCreateViewModel()
{
}
}
Вот отрывок из Create.cshtml
@model WdcTesterManager.Models.Request
@{
ViewBag.Title = "Create Request";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Create Request</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.EditorFor(model => model.TesterLocationCreateViewModel)
</div>
</div>
}
Вот TesterLocationCreateViewModel.cshtml (Редактор шаблонов):
@model WdcTesterManager.Models.TesterLocationCreateViewModel
<div class="col-md-6">
<h4>Tester Location</h4>
<div class="container-fluid">
<div class="form-group">
@Html.LabelFor(model => model.OEM, htmlAttributes: new { @class = "control-label col-md-4" })
<div class="col-md-8">
@Html.DropDownList("OEM", (SelectList)ViewBag.OemList, "Choose one", new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.OEM, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.LocationCity, htmlAttributes: new { @class = "control-label col-md-4" })
<div class="col-md-8">
@Html.EditorFor(model => model.LocationCity, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.LocationCity, "", new { @class = "text-danger" })
</div>
</div>
</div>
</div>
Когда Я отправляю форму, не заполняя ничего, я получаю ошибку проверки для Города, но ничего для OEM. Есть идеи?
Каково просматривать с помощью 'TesterLocationCreateViewModel'? В этом случае вам также понадобится атрибут '[Обязательный]'. –
Да, эта модель используется. Я просто добавил [Обязательно], но это не помогло:/ – AndeeC
Хмм - что-то не имеет смысла, потому что если бы вы использовали модель представления без '' [UIHint] ', то' EditorFor() 'никогда бы не сгенерировал выпадающий список. –