Я потратил немало времени, чтобы узнать, но не смог.Когда я публикую свою модель без выбора какого-либо параметра - , фактически выбирая 0 - Select
- параметр , проверка Required
не работает.
Я также попытался удалить программно добавленную опцию по умолчанию из служебного кода в код представления, проверка работала не так, как это.
Если я полностью удалил параметры по умолчанию, то средство просмотра автоматически выберет первый вариант из списка, и проверка никогда не будет выполнена.
Как правильно выполнить проверку на стороне сервера?
Это моя модель
public class AuditViewModel
{
public Guid Id { get; set; }
[Display(Name = "Subject")]
[Required(ErrorMessage = "IsRequired")]
public string Subject { get; set; }
public string AuditType { get; set; }
public string LocationCountry { get; set; }
public string LocationOffice { get; set; }
[Required(ErrorMessage = "IsRequired")]
[Display(Name = "AuditType")]
public int AuditTypeId { get; set; }
public string CreatedOn { get; set; }
public string ModifiedOn { get; set; }
public string CreatedBy { get; set; }
[Display(Name = "Description")]
[Required(ErrorMessage = "IsRequired")]
public string Description { get; set; }
[Display(Name = "Country")]
[Required(ErrorMessage = "IsRequired")]
public int LocationCountryId { get; set; }
[Display(Name = "Office")]
[Required(ErrorMessage = "IsRequired")]
public int LocationOfficeId { get; set; }
[Display(Name = "Season")]
public string Season { get; set; }
public List<SelectListItem> Countries { get; set; }
public List<SelectListItem> AuditTypes { get; set; }
public List<SelectListItem> Offices { get; set; }
public List<AuditViewModel> AuditList { get; set; }
}
Это служба , которая получает данные списка выбора и создает списки для привязки
public class AuditViewModelService : IAuditViewModelService
{
public List<SelectListItem> GetAuditTypes()
{
var list = new List<SelectListItem>
{
new SelectListItem { Text = _sharedLocalizer.GetLocalizedString("Select"), Value = "0", Selected = true }
};
foreach (AuditType item in Enum.GetValues(typeof(AuditType)))
{
list.Add(new SelectListItem { Text = _enumLocalizer.GetLocalizedString(item.ToString()), Value = ((int)item).ToString() });
}
return list;
}
public List<SelectListItem> GetCountries()
{
var list = new List<SelectListItem> { new SelectListItem { Text = _sharedLocalizer.GetLocalizedString("Select"), Value = "0", Selected = true } };
list.AddRange(_countryRepository.GetAll().ToList().ToSelectListItemList("Name"));
return list;
}
public List<SelectListItem> GetOffices()
{
var list = new List<SelectListItem> { new SelectListItem { Text = _sharedLocalizer.GetLocalizedString("Select"), Value = "0", Selected = true } };
list.AddRange(_officeRepository.GetAll().ToList().ToSelectListItemList("Name"));
return list;
}
}
Это часть входных данных представления
<div class="form-group m-form__group">
<label asp-for="AuditTypeId"></label>
<select asp-for="AuditTypeId" asp-items="@Model.AuditTypes" class="form-control m-input m-input--square" id="auditTypeId">
<option value="0">Select</option>
</select>
<span asp-validation-for="AuditTypeId"></span>
</div>
<div class="form-group m-form__group">
<label asp-for="LocationCountryId"></label>
<select asp-for="LocationCountryId" asp-items="@Model.Countries" class="form-control m-input m-input--square" id="locationCountryId">
<option value="0">Select</option>
</select>
<span asp-validation-for="LocationCountryId"></span>
</div>
<div class="form-group m-form__group">
<label asp-for="LocationOfficeId"></label>
<select asp-for="LocationOfficeId" asp-items="@Model.Offices" class="form-control m-input m-input--square" id="locationOfficeId">
<option value="0">Select</option>
</select>
<span asp-validation-for="LocationOfficeId"></span>
</div>