Я застрял в этой проблеме некоторое время и не могу найти ничего в Интернете, что помогло бы.
У меня есть 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
? В этом случае вам также понадобится атрибут[Required]
. - person   schedule 23.04.2016[UIHint]
, тоEditorFor()
никогда бы не сгенерировал раскрывающийся список. - person   schedule 23.04.2016[UIHint]
установлен в модели данных, и кажется, что его не нужно устанавливать в модели представления, поскольку он работает без моей установки в модели представления. меня тоже это смущает... - person AndeeC   schedule 23.04.2016LocationCity
, что также было бы невозможно, поскольку свойство в модели представления не помечено[Required]
. Что-то не так с кодом, который вы показали. - person   schedule 23.04.2016@model WdcTesterManager.Models.RequestCreateViewModel
- person AndeeC   schedule 25.04.2016