2009-06-08 5 views
2

내가 같은 코드가 있습니다C# MVC : 그리드의 선택 열 (foreach는)

<% foreach (var item in Model) { %> 

    <tr> 
     <td> 
      <%= Html.Encode(item.Title) %> 
     </td> 
     <td> 
      <%= Html.Encode(item.Capacity) %> 
     </td> 
     <td> 
      <%= Html.Encode(item.Count) %> 
     </td> 
    </tr> 

<% } %> 

내 문제 : 사용자 설정에 이러한 열 조합 따라 (제목, 용량 및/또는 카운트) 표시되지 않도록 설정할 수 있습니다.

내 코드에서 어떻게이 조건을 만들 수 있습니까?

컨트롤러 측면에서

답변

5

, 당신을 ViewData의 설정을 저장할 수 있습니다 : 뷰에서

base.ViewData["TitleVisible"] = false; 

... 을 :

<% foreach (var item in Model) { %> 

<tr> 
    <% if ((bool)ViewData["TitleVisible"]){ %> 
    <td> 
     <%= Html.Encode(item.Title) %> 
    </td> 
    <%}%> 
    <td> 
     <%= Html.Encode(item.Capacity) %> 
    </td> 
    <td> 
     <%= Html.Encode(item.Count) %> 
    </td> 
</tr> 

<% } %> 
0

당신이 속성에 사용자의 기본 설정을 저장할 수 없습니다 가방에 넣은 다음 루프에서 이러한 환경 설정을 참조하십시오.

행은 요소 또는 빈 요소를 채운 세 개의 if 문으로 구성됩니다.

1

는 사용자 설정에 이러한 열 중 조합 따라 (제목, 용량 및/또는 개수) 표시되지 로 설정 할 수있다.

이렇게 할 수있는 방법이 많이 있습니다. 이러한 조건을 기록하고 저장하는 방법에 따라 다릅니다.

<%if(item.ShowTitle){%> 
    <td> 
     <%= Html.Encode(item.Title) %> 
    </td> 
    <%}%> 

또는

<%if(Session.Current.ShowTitle){%> 
    <td> 
     <%= Html.Encode(item.Title) %> 
    </td> 
    <%}%> 

또는 코드에 표시 할 것을 결정 도우미를 만들

:

<% foreach (var item in Model) { Html.CreateItem(item); }%> 

또는 당신이 그것을 할 수있는 많은 다른 방법 중 하나.

0
<% foreach (var item in Model) { %> 
    <tr> 
     <td> 
      <% if(CONDITION) { 
      <%= Html.Encode(item.Title) %> 
      <% } else { %> 
      &nbsp ; 
      <% } %> 
     </td> 
    </tr> 
<% } %> 

테이블 데이터가 비어있는 경우를 고려해야합니다. 그렇지 않으면 렌더링 문제가 발생합니다. 우주를 비파괴 공간에서 꺼내십시오.

1

또는 사용자 설정에 따라 다른보기를 만들 수 있으므로 컨트롤러에 if-logic을 유지할 수 있습니다. 앱의 나머지 부분에 따라 좋은 아이디어가 될 수도 있고 그렇지 않을 수도 있지만, 생각해 봐야 할 부분입니다.