ASP MVC 5 @Html.EnumDropDownListFor 默认为第一个项目
ASP MVC 5 @Html.EnumDropDownListFor Defaults to first Item
我有以下枚举:
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
而不是空选项。我没有在我的控制器中设置默认值,那么为什么它默认为第一项,我怎样才能让它默认为空选项值呢?
如果您向枚举中添加一个空选项,则可以保证:
public enum EmploymentType
{
[Display(Name = "< Select >")]
Select = 0,
FullTime = 1,
PartTime = 2,
Contract = 3
}
就其本质而言,它将 select 列表中的第一项,因此添加通用 "select" 选项是确保存在默认项的一种方式。
如果您依赖顺序,我强烈建议您为枚举值分配一个值,这样当您将其转换为等价的整数时,数字不会发生变化。
这个问题的解决方案是使模型枚举 属性 成为可空类型:
public class MyViewModel
{
public string searchTerm { get; set; }
public EmploymentType? EmploymentType { get; set; }
}
这样 属性 允许空条目,默认情况下它将为空。
您必须将数字添加到您的枚举值中,这些值不是 0。然后“Select 一个选项”将自动显示,如果您没有为您的模型分配任何值。
public enum EmploymentType
{
FullTime = 1,
PartTime = 2,
Contract = 3
}
这里的其他答案也有效,但贡献了更多的工作。
我有以下枚举:
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
而不是空选项。我没有在我的控制器中设置默认值,那么为什么它默认为第一项,我怎样才能让它默认为空选项值呢?
如果您向枚举中添加一个空选项,则可以保证:
public enum EmploymentType
{
[Display(Name = "< Select >")]
Select = 0,
FullTime = 1,
PartTime = 2,
Contract = 3
}
就其本质而言,它将 select 列表中的第一项,因此添加通用 "select" 选项是确保存在默认项的一种方式。
如果您依赖顺序,我强烈建议您为枚举值分配一个值,这样当您将其转换为等价的整数时,数字不会发生变化。
这个问题的解决方案是使模型枚举 属性 成为可空类型:
public class MyViewModel
{
public string searchTerm { get; set; }
public EmploymentType? EmploymentType { get; set; }
}
这样 属性 允许空条目,默认情况下它将为空。
您必须将数字添加到您的枚举值中,这些值不是 0。然后“Select 一个选项”将自动显示,如果您没有为您的模型分配任何值。
public enum EmploymentType
{
FullTime = 1,
PartTime = 2,
Contract = 3
}
这里的其他答案也有效,但贡献了更多的工作。