2017-08-15 54 views
0

所以我通过.NET Core标签助手将枚举转换为下拉列表。这是非常标准的。.NET核心 - 使用选择标签耦合器时,有没有办法将枚举设置为默认值?

枚举

public enum DistanceType 
{ 
    [Display(Name = "1 Mile")] 
    [Description("1")] 
    OneMile = 1, 

    [Display(Name = "5 Miles")] 
    [Description("5")] 
    FiveMiles = 2, 

    [Display(Name = "10 Miles")] 
    [Description("10")] 
    TenMiles = 3, 

    [Display(Name = "20 Miles")] 
    [Description("20")] 
    TwentyMiles = 4 
} 

查看

<select asp-for="EnumDistanceType" asp-items="Html.GetEnumSelectList<DistanceType>()"> 
</select> 

所以我想要做的就是我每次渲染此枚举到一个下拉列表,我希望它选择,默认情况下的时候,除第一个以外的值。因此,例如,每次我提交下拉菜单时,都会向用户显示“5英里”,而不是“1英里”。我不想改变枚举的顺序,但我希望下拉列表位于第二个对象上。

是否有一些简单的方法可以通过在枚举上使用标签来做到这一点?或者如果不在枚举中,有什么方法可以在标签助手中做到这一点?

谢谢。

回答

2

您需要为您的模型实例设置EnumDistanceType属性的值。

比方说,你的模型类是

public class DistanceViewModel 
{ 
    public DistanceType EnumDistanceType { get; set; } 
} 

那么你的控制器动作可能是:

public IActionResult DistanceOption(int id) 
{ 
    var model = new DistanceViewModel(); 
    model.EnumDistanceType = DistanceType.FiveMiles; 
    return View(model); 
} 
+0

,我希望会有一个方法通过对枚举本身就是一个标签来做到这一点。此下拉菜单在我网站的每个页面上都非常多,我宁愿不在每个页面上都设置它。我想我可以让ViewModel的构造函数设置它。 – Pinski

相关问题