获取MVC中的年份列表

时间:2017-11-27 11:30:33

标签: asp.net-mvc asp.net-mvc-4 asp.net-mvc-3

如何获得根据当前年度生成的年份列表到下一年的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" })

如何从控制器绑定年份列表并在我上面的View侧显示?

2 个答案:

答案 0 :(得分:1)

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

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;
}

如果您希望<(例如:21)年从明年开始到当前年份,则<=更新为n

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

答案 1 :(得分:1)

您可以按如下方式更改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;
}