2011-09-22 3 views
0

다음 코드를 사용하여 테이블 머리글을 @foreach 외부에 놓고 싶습니다.하지만 외부로 이동하면 더 이상 닫는 태그가 표시되지 않습니다. 감사합니다면도기 구문 오류가 잘못되었습니다.

@foreach (var item in Model) 
{   
<div class="data" ><label for="fullName" >Name: </label>@item.UserName.Replace('.', '')</div>   
if (Model.Count > 0) 
{ 

<table class="data"> 
<tr>  
    <th> 
     Work Date 
    </th> 
    <th> 
     Change Details 
    </th> 
    <th> 
     Ip Address 
    </th> 
    <th></th> 
</tr> 


<tr>   
    <td>    
    @{ 
    var stringDate = item.WorkDate.ToShortDateString(); 
    } 
     @Html.DisplayFor(modelItem => stringDate) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.ChangeDetail) 
    </td>  
    <td> 
     @Html.DisplayFor(modelItem => item.IpAddress) 
    </td>  
</tr> 
</table> 
} 
<br /> 
<hr /> 

}

그래서 이것은 내가 달성하기 위해 노력하고있어 좀이지만, 아무리 내가하려고 어떤 방법으로 나에게 오류를 제공하지 유지합니다.

<table class="data"> 
<tr>  
    <th> 
     Work Date 
    </th> 
    <th> 
     Change Details 
    </th> 
    <th> 
     Ip Address 
    </th> 
    <th></th> 
</tr> 

    @foreach (var item in Model) 
{ 

    <div class="data" ><label for="fullName" >Name: </label>@item.UserName.Replace('.','')</div>   
if (Model.Count > 0) 
{ 


    <tr>   
    <td>    
    @{ 
    var stringDate = item.WorkDate.ToShortDateString(); 
    } 
     @Html.DisplayFor(modelItem => stringDate) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.ChangeDetail) 
    </td>  
    <td> 
     @Html.DisplayFor(modelItem => item.IpAddress) 
    </td>  
</tr> 


</table> 
} 
<br /> 
<hr /> 

}

답변

4

각 루프마다 테이블 닫기 태그가 있어야합니다.

+0

와우 나는 무지하게 20 분 동안 그것을 어지럽히고 있다고 느낀다. 감사) – Jesse

3

단답형 : 종료 태그 </table>foreach 루프외부에 배치되어야한다.


긴 대답은 : 당신이 적어도 하나 개의 항목을 가지고 있기 때문에 순간 당신은 루프 내에서 코드 블록을 입력하기 때문에 당신은 foreach 루프의 Model.Count > 0 외부를 넣어해야 Model.Count > 0 항상 true로 평가합니다.

모델에 항목이있는 경우에만 표 머리글을 인쇄합니다. 그 후에 각각 item에 대해 한 행을 Model에 추가합니다. <table></table>은 동일한 중첩 수준 내에서 발생해야합니다.

@if (Model.Count > 0) 
{ 
    <table class="data"> 
     <tr>  
      <th>Date</th> 
      <th>Change Details</th> 
      <th>Ip Address</th> 
      <th></th> 
     </tr> 

    @foreach (var item in Model) 
    {   
     <div class="data" > 
      <label for="fullName" >Name: </label> 
      @item.UserName.Replace('.', ' ') 
     </div> 

     @{ 
      var stringDate = item.WorkDate.ToShortDateString(); 
     } 

     <tr>   
      <td>@Html.DisplayFor(modelItem => stringDate)</td> 
      <td>@Html.DisplayFor(modelItem => item.ChangeDetail)</td>  
      <td>@Html.DisplayFor(modelItem => item.IpAddress)</td>  
     </tr> 
    } 

    </table> 

    <br /> 
    <hr /> 
} 

당신은 해당 컨트롤러 액션으로보기 밖으로 로직 (@item.UserName.Replace('.', ' '))를 이동하는 것을 고려한다.

관련 문제