2017-10-11 2 views
0

J'ai mis en place une application web MVC en utilisant framework d'entité pour un système de demande de congé. Le modèle, RequestModel, a une valeur LeaveType, que je voudrais proposer à l'utilisateur de sélectionner dans une liste déroulante. Le code pour l'entrée LeaveType sur theview la page est la suivante:Impossible d'obtenir une liste déroulante pour transmettre des données de la vue au contrôleur?

<div class="form-group"> 
     @Html.Label("Leave Type", htmlAttributes: new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.DropDownList("LeaveTypes") 
     </div> 
    </div> 

Les types de congé sont passés dans une liste de chaînes à travers le ViewBag et afficher bien lors de l'affichage de la page Web et vous permettent de sélectionner une. Cependant, lors du débogage, je peux voir que tout ce que vous sélectionnez ne passe jamais à la méthode HttpPost Create, mais affiche simplement la valeur comme nulle. Le poste créer ouvre en tant que telle avec la commande Bind suivante:

// POST: Request/Create 
    [HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Create([Bind(Include = "ID,LeaveType,FullName,Email,StartDate,EndDate,LeaveLength,Details,RequestDate,ReplyDate,Accepted,Special")] RequestModel requestModel) 
    { 

J'apprécierais beaucoup des idées sur ce que je pourrais avoir manqué. Je peux ajouter d'autres parties du code si elles pourraient aider à aller à la racine du problème, faites le moi savoir.

+0

Pouvez-vous, s'il vous plaît, montrer, comment voulez-vous Initialiser votre ViewBag. –

Répondre

1

Vous créez une liste déroulante avec le nom LeaveTypes mais le lier comme LeaveType. Modifier le nom du menu déroulant en conséquence:

@Html.DropDownList("LeaveType") 

... ou utilisez

Html.DropDownListFor(m => m.LeaveType, ...) 

méthode