在 MVC 中获取年份列表

Get list of year in MVC

我应该如何获取基于当前年份到下一个 21 年份生成的年份列表

在控制器方面,我正在尝试获取年份并在视图方面传递该模型

 public IList<SelectListItem> GetYear()
    {            
        var Year= "";                      
        //Hear I want to bind the year in for loop for next years like Current year to next 21 year
        // Some thing like for loop over year
        return Year;
    }

 public ActionResult PaymentInformation(FormCollection fill)
    {
        if (User.Identity.IsAuthenticated)
        {
            int StudentRequestId = 0;
            string CurrentURL = "";
            foreach (var key in fill.AllKeys)
            {
                StudentRequestId = Convert.ToInt32(fill["hdstatusstudentrequestid"]);
                CurrentURL = Convert.ToString(fill["hdCurrenturl"]);                    
            }
            ViewBag.StudentRequestId = StudentRequestId;
            ViewBag.CurrentURL = CurrentURL;
            var Year = GetYear();
            var model = new PaymentInformation { AvailableYear = Year };
            return View(model);
        }
        else
        {
            return RedirectToAction("Index", "Home");
        }
    }

而我的模型方面是我创建了列表项以获取年份列表

public PaymentInformation()
{
AvailableYear = new List<SelectListItem>();
}

在视图方面,我编写了代码来绑定从 AvailableYear 获取的年份

 @Html.DropDownListFor(model => model.Year, Model.AvailableYear, new { @class = "form-control" })

如何从控制器绑定年份列表并将其显示在我的上方视图端?

添加一个 for 循环,将 21 个项目添加到 SelectListItem 列表,从当前年份开始每年一个项目

public IList<SelectListItem> GetYear()
{
    const int numberOfYears = 21;
    var startYear = DateTime.Now.Year;
    var endYear = startYear + numberOfYears;

    var yearList = new List<SelectListItem>();
    for (var i = startYear; i < endYear ; i++)
    {
        yearList.Add(new SelectListItem() { Value = i.ToString(), Text = i.ToString() });
    }
    return yearList;
}

如果您希望 n(例如:21)年根据需要从明年开始而不是今年开始,请将 < 更新为 <=

此外,如果您有视图模型,为什么要使用动态 ViewBag 来传输数据?将 StudentRequestIdCurrentURL 属性添加到您的视图模型 (PaymentInformation) 并使用它。

您可以按如下方式更改GetYear方法的代码。

public IList<SelectListItem> GetYear()
{
    var startYear = DateTime.Now.Year;

    var yearList = new List<SelectListItem>();
    for (var i = DateTime.Today.Year; i < DateTime.Today.Year + 21; i++)
    {
        yearList.Add(new SelectListItem { Value = i, Text = i.ToString() });
    }
    return yearList;
}