如何在未来几年优化这个asp.net代码?

时间:2016-05-12 12:48:34

标签: c# asp.net asp.net-mvc

我在下面有这个代码,我使用相同的方法将它绑定到asp.net mvc中的下拉列表。 它工作正常...... 使用ID的几年,手动添加每年都不是一个好主意。 我想要的是优化代码或使用for循环或其他东西减少代码,然后将列表传递给视图。

 var list = new SelectList(new[] 
           {
               new { ID = "1", Name = "2015" },
                new { ID = "2", Name = "2016" },
            new { ID = "3", Name = "2017" },
        },
            "ID", "Name", 2);

        ViewBag.YearIn = list;
        return View();

4 个答案:

答案 0 :(得分:1)

这是一个快速举例说明如何实现这一点。假设您总是在2015年开始并不好。如果您想在今年开始,可以将const int StartYear替换为DateTime.Now.Year

您还可以设置您希望将来使用的总年数。

const int StartYear = 2015;
const int TotalYears = 3;
var years = new System.Collections.Generic.List<object>();

for (int id = 1, year = StartYear; id <= TotalYears; id++, year++)
{
    years.Add(new { ID = Convert.ToString(id), Name = Convert.ToString(year) });
}

var list = new SelectList(years, "ID", "Name", 2);

答案 1 :(得分:0)

for(var i = 2015; i < 2030; i++)
    list.Add(new { Id = i-2014, Name = i });

这样的事情应该有效。

答案 2 :(得分:0)

按此DateTime.Now.Year执行以获取当前年份,然后根据方案添加您想要添加的年数

int year = DateTime.Now.Year;
int uptoyear= year+10;//or it depends on scenario

var years = new System.Collections.Generic.List<object>();

for (var i = year; i <= uptoyear; i++)
years.Add(new { ID = Convert.ToString(i-(year-1)), Name = Convert.ToString(year) });

var list = new SelectList(years, "ID", "Name", 1);

答案 3 :(得分:0)

使用Enumerable.Range自动生成数字列表。

此外,如果需要,使用DateTime.Now.Year以当前年份开始列表。

代码示例工作正常:

https://dotnetfiddle.net/EnkJOB