我有以下枚举:
public enum EmploymentType
{
FullTime,
PartTime,
Contract
}
public class MyViewModel
{
public string searchTerm { get; set; }
public EmploymentType EmploymentType { get; set; }
}
public ActionResult Index(string searchTerm, string EmploymentType)
{
// some other stuff
var viewModel = new MyViewModel { SearchTerm = search };
return View(viewModel);
}
@Html.EnumDropDownListFor(m => m.EmploymentType, "", new { @class = "form-control" })
当我加载页面时,下拉默认为第一项FullTime
而不是空选项。我没有在我的控制器中设置默认值,所以为什么它默认为第一项,如何让它默认为空选项值呢?
答案 0 :(得分:2)
解决方案是使模型枚举属性成为可以为空的类型:
public class MyViewModel
{
public string searchTerm { get; set; }
public EmploymentType? EmploymentType { get; set; }
}
这种方式属性允许空条目,默认情况下它将为null。
答案 1 :(得分:0)
如果您在枚举中添加一个空选项,则可以保证:
public enum EmploymentType
{
[Display(Name = "< Select >")]
Select = 0,
FullTime = 1,
PartTime = 2,
Contract = 3
}
就其本质而言,它将选择列表中的第一项,因此添加通用“选择”选项是确保存在默认项目的方法。
如果您依赖订单,我强烈建议为枚举值赋值,因此如果将数字转换为等价整数,则数字不会移位。