2016-10-10 1 views
4

Alors, je me suis un DropdownListfor qui ressemble à ce que, à mon avis:DropDownListFor Comment définir une valeur par défaut à partir d'une base de données

@Html.DropDownListFor(m => m.ProductCategory, new SelectList(Model.ProductCategories.OrderBy(m => m.PCNumber), "", "Name"), "") 

Cela fonctionne comme il se doit. Dans ma prochaine vue l'utilisateur devrait pouvoir éditer sa commande. Donc ce que je veux faire est, s'il ouvre la forme toutes ses données antérieures doivent être affichées, pour textboxes Je l'ai travailler avec le code suivant:

@Html.TextBoxFor(m => m.NameOfProduct, new { @Value = @Model.NameofProduct }) 

Alors maintenant, mon problème est de savoir comment puis-je faire la même chose que j'ai faite avec mes textboxes (en leur donnant des valeurs par défaut de mon modèle) pour un DropDownListFor quand la valeur est stockée dans mon modèle (base de données)? Il devrait aimer que s'il a choisi la catégorie 3 avant et veut maintenant éditer sa commande d'avant, la liste déroulante devrait montrer la catégorie 3 tout de suite.

Nous vous remercions de votre aide!

+0

Cochez cette question: http://stackoverflow.com/questions/23799091/html-dropdownlistfor-how-to-set-default-value. Vous pouvez certainement définir la valeur par défaut du DDL à partir du contrôleur ou du côté de la vue. –

+1

Ne définissez jamais l'attribut value dans les méthodes 'HtmlHelper'. C'est juste '@ Html.TextBoxFor (m => m.NameOfProduct)'. Et pour la liste déroulante, il vous suffit de définir la valeur de 'ProductCategory' dans la méthode GET avant de passer le modèle à la vue (par exemple' model.ProductCategory = 3; return View (modèle); ' –

+0

Merci à vous deux pour cela Si je vous comprends bien @StephenMuecke je définirais toutes mes valeurs pour mes textboxes dans la méthode get aussi? – RawMVC

Répondre

3

Essayez ce code peut-être travailler dans votre situation.

@Html.DropDownListFor(m=> m.PCNumber, new SelectList(m.ProductCategories, "PCNumber", "ProductCategory"), "-- Select Category --", new { @class = "form-control" }) 

ici, vous obtiendrez l'ordre d'édition par défaut dans votre menu déroulant

[HttpGet] 
     public ActionResult EditOrder(int? id) 
     { 
      _obj_order_detail = db.order_detail.Find(id); 
      if (_obj_order_detail != null) 
      { 
       _obj_order_detail.ProductCategories = db.category_detail.ToList(); //get category List 
       return View(_obj_order_detail); 
      } 
      else 
      { 
       return view(); 
      } 

     } 

ce sera de retour vue avec l'ordre que vous souhaitez modifier et ProductCategories et défaut déroulant bu contiens ProductCategory que vous souhaitez modifier