У меня есть этот ViewModel:Почему моя сводка валидации не отображается?
public class PersonBindingModel
{
public int Id { get; set; }
[Required]
public string LastName { get; set; }
public string FirstName { get; set; }
public int Age { get; set; }
}
и соответствующая часть Create
зрения scaffolded для него с помощью стандартных пакетов .NET Ключевых и EF Core:
<form asp-action="Create">
<div class="form-horizontal">
<h4>PersonBindingModel</h4>
<hr />
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="LastName" class="col-md-2 control-label"></label>
<div class="col-md-10">
<input asp-for="LastName" class="form-control" />
<span asp-validation-for="LastName" class="text-danger"></span>
</div>
</div>
</div>
...
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</form>
Тем не менее, когда я опускаю требуемый LastName
, Я получаю сообщение подтверждения только под этим вводом, а сводка валидации вообще не отображается. Во всех других формах моего проекта отображается сводка, а также сообщение под входом LastName
. Это оказывается форма:
<form action="/persons/Create" method="post">
<div class="form-horizontal">
<h4>PersonBindingModel</h4>
<hr>
<div class="form-group">
<label class="col-md-2 control-label" for="LastName">LastName</label>
<div class="col-md-10">
<input class="form-control input-validation-error" type="text" data-val="true" data-val-required="The LastName field is required." id="LastName" name="LastName" value="">
<span class="text-danger field-validation-error" data-valmsg-for="LastName" data-valmsg-replace="true">The LastName field is required.</span>
</div>
</div>
...
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default">
</div>
</div>
</div>
...
</form>
Я опустил проверки на сторону клиента, то есть _ValidationScriptsPartial
, как я тестирование модели связывания стороны контроллера проверки вместе с я добавил нерелевантным пользовательскую проверкой. Форма делает то же самое с пользовательской проверкой или без нее.
В оказанной HTML, вы можете ясно видеть недостающее LastName
сгенерировал ошибку ModelState
, и я всегда был под впечатлением, что в такой форме, как это, до тех пор, как ModelState
содержит ошибки модели, то есть один с именами входных как ключи, должна отображаться сводка валидации. Почему не так?
Вы пробовали с 'АСП-проверки-резюме =«Все» '? –
@StephenMuecke. Все опции 'All' включают в себя сообщения, которые вы добавляете с пустыми ключами имен свойств. Я действительно хочу знать, почему он не показывает мои ошибки с действительными ключами, поэтому меня интересует только 'ModelOnly'. Но я все равно попробую, спасибо. – ProfK
'asp-validation-summary =" Все "' равнозначно '@ Html.ValidationSummary (false)' и 'asp-validation-summary =" ModelOnly "' равно значению '@ Html.ValidationSummary (true)' –