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?
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) –
Oui, vous pouvez utiliser l'exemple montré dans la première partie de mon répondre. –
@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