一个月太多天了

时间:2014-01-08 22:29:08

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

我似乎无法理解这一点。

我在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>


修改

作为对“为什么在月之前循环?”的问题的回答。 我在几个月前就做了,因为我正在制作一张桌子。使其自上而下似乎合乎逻辑。而不是左右。

2 个答案:

答案 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>
}