2017-08-15 2 views
0

Je convertis donc une énumération en une liste déroulante via l'aide de la balise .NET Core. C'est plutôt standard..NET Core - Existe-t-il un moyen de définir une valeur d'enum pour une valeur par défaut lors de l'utilisation d'un helper Select Tag?

Enum

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 
} 

Voir

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

Donc ce que je veux faire est à chaque fois que je rends ce ENUM dans une liste déroulante, je veux choisir, par défaut, une valeur autre que la première. Ainsi, par exemple, chaque fois que je rends la liste déroulante, elle affiche "5 Miles" à la place de "1 Mile". Je ne veux pas changer l'ordre de l'énumération, je veux que la liste déroulante soit sur le second objet.

Existe-t-il un moyen simple de le faire en utilisant simplement une étiquette sur l'énumération? Ou sinon dans l'énumération, y a-t-il un moyen de le faire dans l'aide-balise?

Merci.

Répondre

2

Vous devez définir la valeur de la propriété EnumDistanceType pour votre instance de modèle.

Disons que votre classe de modèle est

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

Ensuite, votre action du contrôleur peut être:

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

J'espérais y aurait-il un moyen de le faire via une balise sur le ENUM lui-même. Cette liste déroulante est à peu près sur chaque page de mon site et je préfère ne pas le mettre sur chaque page. Je suppose que je pourrais avoir le constructeur du ViewModel le définir. – Pinski