2013-06-11 2 views
-3

suis incapable d'obtenir la valeur correcte de dérouler dans mvc4. mon code modifier vue estne fonctionne pas liste déroulante dans l'affichage d'édition dans mvc4 rasoir

@Html.DropDownList("IDCountry", (IEnumerable<SelectListItem>)ViewBag.IDCountry, 
    new { @class = "span6" }) 

si j'utilise le code ci-dessous suis en mesure d'obtenir la valeur correcte, mais je suis incapable d'appliquer le style pour dropdownlist

@Html.DropDownList("IDCountry",String.empty) 

s'il vous plaît résoudre mon problème.

Répondre

2

Vous ne devez pas utiliser la même valeur (IDCountry) en tant que premier et deuxième argument pour la liste déroulante. Le premier argument représente la valeur à associer à la liste déroulante tandis que le second représente les valeurs disponibles. Alors:

@Html.DropDownList(
    "SelectedCountryID", 
    (IEnumerable)ViewBag.IDCountry, 
    new { @class = "span6" } 
) 

Pour éviter toutes ces confusions avec Dropdowns je vous recommande d'utiliser un modèle de vue:

public class MyViewModel 
{ 
    public string SelectedCountryID { get; set; } 
    public IEnumerable<SelectListItem> Countries { get; set; } 
} 

et votre action de contrôleur remplir et de transmettre ce modèle de vue de la vue:

public class HomeController: Controller 
{ 
    public ActionResult Index() 
    { 
     var model = new MyViewModel(); 
     // preselected an element with Value = "2" 
     model.SelectedCountryID = "2"; 

     // obviously those values could come from a database or something 
     model.Countries = new[] 
     { 
      new SelectListItem { Value = "1", Text = "Country 1" }, 
      new SelectListItem { Value = "2", Text = "Country 2" }, 
      new SelectListItem { Value = "3", Text = "Country 3" }, 
      new SelectListItem { Value = "4", Text = "Country 4" }, 
     }; 

     return View(model); 
    } 

    [HttpPost] 
    public ActionResult Index(MyViewModel model) 
    { 
     return Content("Thanks for selecting country ID: " + model.SelectedCountryID); 
    } 
} 

et enfin, selon vous utilisez l'assistant fortement typé:

@model MyViewModel 

@using (Html.BeginForm()) 
{ 
    <div> 
     @Html.LabelFor(x => x.SelectedCountryID) 
     @Html.DropDownListFor(
      x => x.SelectedCountryID, 
      Model.Countries, 
      new { @class = "span6" } 
     ) 
    </div> 

    <button type="submit">OK</button> 
} 

Voyez comment l'instant STOP en utilisant ViewBag et en retirer absolument toutes les traces dans votre application tout devient clair comme du cristal?

+0

le code n'est pas écrit par moi. pas possible de changer votre chemin maintenant, donc est-il possible d'appliquer CSS pour le type de code ci-dessous @ Html.DropDownList ("IDCountry", String.empty) –

+1

Oui, vous pouvez utiliser l'exemple montré dans la première partie de mon répondre. –

+0

@Anilreddy d'accord avec Darin ... vous pouvez réécrire n'importe quoi et ce devrait être ce dur donner il vous a donné tous les exemples. Et je les ai testés ils travaillent. – Pakk

Questions connexes