我似乎无法理解这一点。
我在MVC4
生成了一年的日历。但出于某种原因,它显示了几个月的太多日子。
这可能是一个迭代错误,但我似乎没有看到它。
.cshtml文件
<table>
<tr>
<td>
</td>
@{
for(int nr = 0; nr<12; nr++)
{
<td>
<p>
@monthNames[nr]
</p>
</td>
}
}
</tr>
@{
for(int day = 1; day <= 31; day++)
{
<tr>
<td>
<p>
@day
</p>
</td>
@{
for(int month = 1; month <= 12; month++)
{
if (day <= DateTime.DaysInMonth(year, month))
{
DateTime weekday = new DateTime(year, month, day);
<td>
@{
foreach (var thisEvent in events)
{
if ((thisEvent.day == day) && (thisEvent.month == month) && (thisEvent.year == year))
{
<div style="background-color:@thisEvent.description.eventType.color;">
@thisEvent.description.name
</div>
}
}
}
<p>
@weekday.ToString("dddd", new System.Globalization.CultureInfo("da-DK"))
</p>
</td>
}
}
}
</tr>
}
}
</table>
修改
作为对“为什么在月之前循环?”的问题的回答。 我在几个月前就做了,因为我正在制作一张桌子。使其自上而下似乎合乎逻辑。而不是左右。
答案 0 :(得分:1)
int year = 2014;
for (int month = 1; month <= 12; month++)
{
int daysInMonth = DateTime.DaysInMonth(year, month)
for (int day = 1; day <= daysInMonth; day++)
{
DateTime weekday = new DateTime(year, month, day);
<td>
@{
<span>@weekday</span>
<br />
}
</td>
}
}
我相信,这将打印2014年的每一天。不知道你在哪里使用表行和列,但我会留下它。几个月,然后几天。
答案 1 :(得分:0)
发现错误。
我必须在
中添加else
if (day <= DateTime.DaysInMonth(year, month))
要做到这一点
if (day <= DateTime.DaysInMonth(year, month))
{
<td>Day exist</td>
}
else
{
<td>Day doesn't exist</td>
}