Я работаю над приложением ASP.NET core 2.0, в котором я создал форму для ввода данных. Проверяя, работает ли проверка, я заметил, что не отображаются сообщения проверки для обязательного свойства моей модели представления.
Когда требуемый ввод пуст, и я нажимаю кнопку «Сохранить», я не могу продолжить, поэтому ввод требуется, но сообщения не видно.
Модель представления для моего представления формы имеет список моделей представления как свойство, потому что часть формы должна изменяться динамически.
Это моя основная модель просмотра:
public class SettingsViewModel
{
public List<KeyValueViewModel> KeyValuePairs { get; set; }
public string Description { get; set; }
}
Вот KeyValueViewModel
public class KeyValueViewModel
{
public int Id { get; set; }
[Display(Name = "Key")]
[Required(ErrorMessage = "Key is required")]
public string Key { get; set; }
[Display(Name = "Value")]
[Required(ErrorMessage = "Value is required")]
public string Value { get; set; }
public Guid SettingFileId { get; set; }
public Dictionary<Guid, string> SettingFileDropdownOptions { get; set; }
}
Вот основной вид:
@model SettingsViewModel
<form asp-action="Create" id="SettingsForm">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="row">
<div class="col-md-12">
<label asp-for="@Model.KeyValuePairs[0].Key" class="control-label col-md-3 no-left-padding"></label>
<label asp-for="@Model.KeyValuePairs[0].Value" class="control-label col-md-offset-1 no-left-padding"></label>
</div>
</div>
@for (var i = 0; i < Model.KeyValuePairs.Count; i++)
{
var keyValuePair = Model.KeyValuePairs[i];
keyValuePair.Id = i;
<div id="KeyValuePairsContainer">
@Html.Partial("_settingKeyValue", keyValuePair)
</div>
}
<div class="form-group col-md-12 no-left-padding">
<label asp-for="Description" class="control-label"></label>
<textarea asp-for="Description" class="form-control" ></textarea>
<span asp-validation-for="Description" class="text-danger"></span>
</div>
<div class="form-group col-md-12 no-left-padding">
<input type="submit" value="Opslaan" class="btn btn-primary" id="Submit" />
<a href="@Url.Action("Index", "Home")" class="btn btn-default" id="Cancel">Annuleren</a>
</div>
</form>
И вот частичное представление, которое рендерится:
@model KeyValueViewModel
<div class="form-group col-md-4 no-left-padding">
<input asp-for="@Model.Key" class="form-control col-md-3" id="[email protected]" name="KeyValuePairs[@Model.Id].Key" required="required"/>
<span asp-validation-for="@Model.Key" class="text-danger"></span>
</div>
<div class="form-group col-md-4 no-left-padding">
<input asp-for="@Model.Value" class="form-control col-md-3" id="[email protected]" name="KeyValuePairs[@Model.Id].Value" required="required" />
<span asp-validation-for="@Model.Value" class="text-danger"></span>
</div>
Сообщение о проверке свойств Key и Value не отображается, когда должно. Мы протестировали свойство Description в SettingsViewModel, добавив требуемый тег с сообщением, и это сработало нормально.
Как мне получить сообщение проверки KeyValueViewModel, отображаемое в моем основном представлении?
Изменить
<span class="text-danger field-validation-valid" data-valmsg-for="Key" data-valmsg-replace="true"></span>
Не обновляется до class = "field-validation-error", когда должно быть
jquery.validate.js
внутрь самого частичного представления? - person Manoz   schedule 23.11.2017