2016-11-12 1 views
0

Je suis nouveau à MVC, et j'ai des problèmes avec quelque chose qui aurait été un morceau de gâteau pour moi dans webforms. J'ai donc une liste déroulante du ministère, et les ministères se retrouvent dans une énumération. Ainsi, le dropdownlist à mon avis ressemble à ceci:Comment ajouter un élément par défaut à un EnumDropDownList dans MVC?

 <div class="form-group"> 
      @Html.LabelFor(model => model.Department, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.EnumDropDownListFor(model => model.Department, "Select a Department", htmlAttributes: new { @class = "form-control" }) 
       @Html.ValidationMessageFor(model => model.Department, "", new { @class = "text-danger" }) 
      </div> 
     </div> 

Ajout du texte « Sélectionnez un département » ne comprend cette option dans le dropdownlist, mais quand la page se charge, plutôt que cette option étant sélectionnée, le premier département l'énumération est sélectionnée. Comment est-ce que je fais en sorte que l'option "default" soit sélectionnée quand la page se charge?

Je suis sûr que ma prochaine question serait alors de savoir comment valider qu'un autre élément a été sélectionné (c'est-à-dire la validation de terrain requise).

Merci!

Répondre

1

Votre propriété de modèle n'est probablement pas Nullable. Cela signifie qu'il sera toujours initialisé à la première valeur de l'énumération.

Si votre propriété de modèle ressemble à ceci:

public MyEnum { get; set; } 

Modifier à ceci:

[Required] //Require one of the values is selected i.e. value is not null 
public Nullable<MyEnum> { get; set; } 

Ceci est un problème très général lié à exiger des types de valeur ont un ensemble de valeurs. Un moyen facile est de le faire Nullable et de vérifier qu'il n'est pas nul. Sinon, le type de valeur aura juste sa valeur par défaut.

+0

On dirait un gagnant - merci! Je l'ai fait mettre à [Obligatoire], mais n'a pas le Nullable <>. – Karl

1

Cette réponse montre comment faire la valeur sélectionnée et la validation: Html.EnumDropdownListFor: Showing a default text

Avec la validation dans MVC, vous faites généralement cela avec un attribut dans le modèle par exemple [Required]

+0

Aussi une réponse utile! La réponse de juunas, cependant, était exactement ce dont j'avais besoin. – Karl