在我的下拉列表中只有一个简短的问题,有两个空值,然后男性和女性,我只是想知道为什么这些空值出现,我还离开了性别?所以,选择默认为空。请指教。
public class PatientRegistrationViewModel
{
[Required(ErrorMessage = "Please select your gender.")]
public Gender? GGender
{ get; set; }
public enum Gender
{
[Display(Name = "Male", Order = 0)]
Male = 0,
[Display(Name = "Female", Order = 1)]
Female = 1
}
}
查看
<div class="row">
<div class="col-md-6">
<!--<i class="fa fa-child" aria-hidden="true"></i>-->
@Html.LabelFor(model => model.GGender, "Choose your gender:", new { @style = "", @class = "", id = "" })
<span style="color: red;">*</span>
@*@Html.DropDownListFor(model => model.Profession, new SelectList(Model.Professions, "Id", "Name"), new { placeholder = "", @style = "", @class = "form-control", id = "Profession" })*@
@Html.EnumDropDownListFor(model => model.GGender, "", new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.GGender)
</div>
</div>
答案 0 :(得分:0)
虽然数据是空的,但你看到的是文本或标签而不是值。和
public enum Gender
方法将其显示为此(男性或女性)。
要测试 - 不显示文本,然后从中删除名称
display name = ""
现在不会显示文字。
您可以通过 html inspect来测试它们是否有价值。
答案 1 :(得分:0)
问题原因
第一个空值将来自此方法调用的第二个参数
@Html.EnumDropDownListFor(model => model.GGender, "", new { @class = "form-control" })
这里你传递的是一个空字符串,当没有选择任何内容时必须出现这个值(我假设你已经知道了)
这很容易,所以第二个空值来自哪里?
它来自您的属性GGender
,其类型为Nullable<Gender>
而非Gender
,因此实际上此属性有三个可能的值
select
html元素中呈现为第二个空值) 解决方案
如果您希望不默认情况下从select
HTML元素中选择任何内容
你必须将你的财产改为以下
[Required(ErrorMessage = "Please select your gender.")]
public Gender? GGender { get; set; } = null;
和您在视图中的电话
@Html.EnumDropDownListFor(model => model.GGender.Value, "Please Select gender ...", new { @class = "form-control" })