2017-08-15 27 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

相關問題