2014-01-08 5 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 열두 행과 28..31 열 – Steve

+1

처음에는 31 일을 반복하는 것은 이상한 일입니다. 어떤 종류의 레이아웃을 사용하고 있습니까? 나는 달을 반복하고 DaysInMonth까지 그 날을 안으로 들어 올리겠다. –

+0

은 정교한 질문을 새롭게했다. –

답변

0

오류를 발견했습니다.

내가 만들려면

if (day <= DateTime.DaysInMonth(year, month)) 

else를 추가했다이

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

는 –