月度视图与下拉列表

时间:2017-04-12 15:10:22

标签: c# asp.net-mvc datetime for-loop

我正在使用DayPilot创建每月事件视图

使用此tutorial我创建了事件的日历视图,但下拉列表仅考虑了将来的日期。如何设置for循环,使其从当年1月开始。

这是for循环:

resize

这导致:

  

2017年4月 - 2018年7月

我想保留当月的15个月,但希望从2017年1月开始下拉。

我如何做到这一点?

2 个答案:

答案 0 :(得分:1)

您可以使用AddMonths(-14)返回14个月,并将其用作循环的开始月份。

<select>
    @{ var start = DateTime.Today.AddMonths(-14); }
        @for (var d = start; d < DateTime.Today.AddMonths(1); d = d.AddMonths(1))
        {
        <option value="@d.ToString("s")">@d.ToString("MMMM yyyy")</option>
        }
</select>

DateTime.Today.AddMonths(1)将在下个月为您提供,循环中的表达式d < DateTime.Today.AddMonths(1)可确保您的循环在打印当月后结束。

从当月(4月)起15个月(返回)将从2月开始,而不是1月。如果你想包括Jan,你需要16个月。

如果您不想要15个月,但希望特定月份作为开始(例如:2016年1月),您可以使用下面的DateTime构造函数将该日期作为开始。

var start = new DateTime(2016, 01, 01);

答案 1 :(得分:1)

在1月(1)开始计数,而不是DateTime.Today.Month

@for (var d = new DateTime(DateTime.Today.Year, 1, 1); d < DateTime.Today.AddMonths(15); d = d.AddMonths(1))
{
    <option value="@d.ToString("s")">@d.ToString("MMMM yyyy")</option>
}