Когда я отправляю свою форму с нулевым именем, на моей странице появляется сообщение об ошибке на стороне клиента. Когда я отправляю с нулевым AttributeType, нет никаких ошибок на стороне клиента. Как я могу получить атрибут «Required» для работы с Enum?
public class AttributeName
{
[Required(ErrorMessage = "Attribute Type is required")]
public Enums.AttributeType? AttributeType { get; set; }
[Required(ErrorMessage = "Name is required")]
public string Name { get; set; }
}
Просто для пояснения, когда я пытаюсь отправить форму с нулевым AttributeType, он создает ошибку ModelState, но клиент проверка на стороне не препятствует публикации в обработчике страницы. С другой стороны, когда я отправляю с пустым именем, проверка на стороне клиента препятствует публикации в обработчике страницы.
Конструктор перечисления выглядит так:
public enum AttributeType
{
List = 1,
Text = 2,
Number = 3,
Decimal = 4
}
Razor страница выглядит следующим образом:
<div class="row">
<div class="col-12 form-group">
<label asp-for="AttributeName.AttributeType"></label>
<select asp-for="AttributeName.AttributeType" asp-items="Model.AttributeTypeList">
<option>Select:</option>
</select>
<span asp-validation-for="AttributeName.AttributeType" class="text-danger"></span>
</div>
</div>
<div class="row">
<div class="col-12 form-group">
<label asp-for="AttributeName.Name"></label>
<input asp-for="AttributeName.Name" />
<span asp-validation-for="AttributeName.Name" class="text-danger"></span>
</div>
</div>
А вот как я заполняю список AttributeType:
AttributeModel.AttributeTypeList = WebUtil.GetEnumValues<Enums.AttributeType>();
public static List<SelectListItem> GetEnumValues<T>()
{
return Enum.GetNames(typeof(T)).Select(x => new SelectListItem { Text = Regex.Replace(x, "([A-Z])", " $1").Trim(), Value = ((int)Enum.Parse(typeof(T), x)).ToString() }).ToList();
}