如何获得根据当前年度生成的年份列表到下一年的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侧显示?
答案 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
来传输数据?将StudentRequestId
和CurrentURL
属性添加到您的视图模型(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;
}