Voici comment je procéderais dans la vue
@Html.DropDownList("Last Ten Years", (IEnumerable<SelectListItem>)ViewBag.LastTenYears, "Select A Year")
et dans votre Action
List<int> last10Years = new List<int>();
int currentYear = DateTime.Now.Year;
for (int i = currentYear - 10; i < currentYear; i++)
{
last10Years.Add(i);
}
ViewBag.LastTenYears = new SelectList(last10Years);
Vous pouvez voir une démo ici
Suite à votre commentaire, veuillez trouver ci-dessous ma réponse mise à jour.
Je dois d'abord créer un Model
que nous allons utiliser dans notre vue. Dans cette classe de modèle, vous pouvez avoir vos propriétés appropriées. Pour l'instant, nous n'utiliserons que les propriétés suivantes SelectlistItem
donc notre classe ressemblera à
public class ViewModel
{
public IEnumerable<SelectListItem> LastTenYears { get; set; }
}
Ensuite, dans notre contrôleur, nous pouvons créer une méthode qui nous fournira les informations pour notre liste déroulante.
public IEnumerable<SelectListItem> GetLastTenYears()
{
List<SelectListItem> ddl = new List<SelectListItem>();
int currentYear = DateTime.Now.Year;
for (int i = currentYear - 10; i < currentYear; i++)
{
ddl.Add(new SelectListItem { Text = i.ToString(), Value = i.ToString() });
}
IEnumerable<SelectListItem> lastTenYears = ddl;
return lastTenYears;
}
Maintenant nous voulons passer ces données à la vue. Pour l'argument, je vais utiliser Index
en tant que vue mais vous pouvez le passer à la vue de votre choix. Nous allons donc changer notre Index
action pour
public ActionResult Index()
{
ViewModel viewModel = new ViewModel();
viewModel.LastTenYears = GetLastTenYears(); //get the drop down list
return View(viewModel); //we're passing our Model to the view
}
Enfin, nous voulons être sûrs que notre vue sait quelle Model
à utiliser, nous ferons donc ce qui suit au début de l'article. Index.cshtml
fichier
@model YourNameSpace.ViewModel
et notre DropDownList
sera maintenant modifiée pour pointer vers la propriété de notre méthode d'aide Model
comme
@Html.DropDownList("Last Ten Years", Model.LastTenYears, "Please select a year")