динамическая привязка к году с выпадающим списком

#asp.net-mvc #asp.net-mvc-3 #razor

#asp.net-mvc #asp.net-mvc-3 #бритва #razor

Вопрос:

Я использую MVC3 / Razor и хочу привязать выпадающий список с текущим номером плюс 3 предыдущих года, например,

 2011
2010
2009
2008
  

Как это сделать? Пожалуйста, помогите

Комментарии:

1. есть ли какой-нибудь способ установить ViewData для сохранения выбранного года? при первой загрузке он должен показывать текущий год?

Ответ №1:

Добавьте приведенное ниже для просмотра, чтобы создать выпадающий список (измените модель.Год для исправления свойства модели)

 <div class="editor-field">
        @Html.DropDownList("Years",new SelectList(ViewBag.Years as System.Collections.IEnumerable,Model.Year))
        @Html.ValidationMessageFor(model => model.Year)
    </div>
  

Добавьте приведенное ниже куда-нибудь в свой контроллер или вспомогательный класс

  private void GetYears()
    {
        List<int> Years = new List<int>();
        DateTime startYear = DateTime.Now;
        while (startYear.Year <= DateTime.Now.AddYears(3).Year)
        {
            Years.Add(startYear.Year);
            startYear = startYear.AddYears(1);
        }
        ViewBag.Years = Years;
    } 
  

А затем добавьте нижеприведенную строку к любому методу, который будет вызван для возврата представления (т. Е. Индекса)

getYears();

Ответ №2:

Используя вышеупомянутое решение, но с альтернативой для getYears()

     private void GetYears()
    {
        ViewBag.Years = Enumerable.Range(DateTime.Now.Year, 4);
    }