当我使用空名称提交表单时,页面上会出现客户端错误消息。当我使用空的AttributeType提交时,没有客户端错误。如何获得“必需”属性才能使用枚举?
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
}
剃须刀页面如下:
<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();
}