2014-01-08 47 views
0

我似乎不能夠讓我的頭圍繞這一個。太多天在一個月

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


編輯

至於回答了 「爲什麼是一個月前的一天循環?」。 我在前一個月做了幾天,因爲我在做一個表。自上而下似乎是合乎邏輯的。而不是左 - 右。

+1

似乎天生就是第一圈應該是,而第二個天月。 IE十二行二十八分之三十一列 – Steve

+1

對我來說,你第一次迭代31天,你會選擇什麼樣的佈局,這很奇怪。 我會遍歷個月,那麼這天達的內部DaysInMonth –

+0

更新根據您闡述闡述 –

回答

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> 
} 
+1

那是我的懷疑(因此「表佈局問題,」我對你的問題的評論的問題很高興你有它固定 – McAden

+0

@McAden - 那是什麼激發了我的大腦^^ –

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

獲取內部for循環和內部for循環之前的月份中的天數。將其用作內循環的終止條件。這樣你就不必每天檢查'day <= DateTime.DaysInMonth(year,month)'。 – Yogesh

+0

更新問題闡述 –