2008-10-22 6 views
0

사람들이 일반적으로 Web Forms 시나리오에서 관련 컨트롤 및 내용을 둘러싸고 분리하는 데 사용하는 서버 컨트롤이 무엇인지 궁금합니다. 종종 HTML 및 관련 서버 컨트롤 블록을 둘러싸고, 코드의 UI 로직을 기반으로 표시하거나 숨길 수있는 '패널'이 필요합니다. 나는 일반적으로 패널을 사용하고 있는데, 예를 들어 테이블에 여러 개의 TR을 묶어야 할 경우 작동하지 않는다. 왜냐하면 Panel이 테이블 태그 내에서 유효하지 않은 div로 렌더링하기 때문이다. 이 상황에서 저는 보통 각 TR을 runat 서버로 설정하고 각 TR을 개별적으로 표시/숨기기는하지만 더 좋은 방법이 있어야합니다. 이 시나리오에서 사용 된 PlaceHolder 컨트롤을 보았지만 아무도이 작업을 수행하는지 또는 다른 제안이 있는지 알고 싶었습니다.주변 블록을위한 최상의 서버 컨트롤

+0

당신이 이야기하는 것을 보여줄 수 있습니까? 나는 왜 당신이 테이블 행을 토글하려고하는지 이해하지 못한다 ... –

+0

토글 테이블 행은 충분히 쉽다 ... 그냥 트렁크에 "서버"와 ID를 준다 ... 그는 일반적인 방법을 원한다. 끝에 HTML을 생성하지 않는 컨트롤을 토글합니다. –

답변

1

모든 시나리오에 대해 하나의 대답이 있다고는 생각하지 않습니다. 우리는 항상 망치를 사용할 수 있도록 수백 가지 도구가 없습니다.

패널은 결과 div가 정상적으로 작동 할 때 유용합니다. PlaceHolder는 WebControl 대신 Control에서 상속되므로 적은 오버 헤드를 사용하는 인수를 만들 수 있습니다. 테이블을 가지고 있고 개별 테이블 행을 숨길 필요가있을 때, id와 runat = "server"를 tr에 추가하는 것과 관련된 기능이 없습니다.

또는 큰 테이블의 편집기 컨트롤 (단일 테이블 행을 숨기고 싶을 때 90 %의 시간에 맞음)을 만들어야 할 때도 일부는 자동화했습니다. 나를위한 마크 업. 이 컨트롤은 필드 헤더 텍스트를 굵게 표시 (필수)할지 여부를 결정하고, 롤오버 툴팁이 포함 된 도움말 풍선을 추가하며, 수동으로 추가해야하는 것은 텍스트 상자 또는 다른 편집기 컨트롤입니다. 긍정적 인 부작용은 내 사용자 정의 컨트롤이 나에게 Visible을 설정할 수있는 ID를 제공한다는 것입니다.

0

PlaceHolder 컨트롤을 사용하는 경우에도 Visual Studio는 유효한 HTML이 없다고 불평합니다.

당신은 당신의 치아를 그릿 뒤에 코드에 속성에 액세스 서버 측 코드 블록을 통해 그것을 할 수 있습니다

<table> 
    <tr> 
    .... 
    </tr> 

    <% if(ShowSecretRow) { %> 

    <tr> 
    <td>shhh!</td> 
    </tr> 

    <% } %> 
</table> 

것은 그래도 조심 ... 그것은 미끄러운 경사 그리고 당신은 당신의 ASPX 싶지 않아 너무 복잡하다.

0

아마도 리터럴 컨트롤입니다.

+0

내가 틀렸다면 정정 해 주겠지 만, 텍스트 속성에서 설정하지 않는 한 리터럴에 서라운드 HTML을 넣을 수는 없다고 생각합니다. asp : literal ...> HTMLHERE을 사용하여 .ascx 또는 .aspx에서 HTML 묶음을 둘러싸면 오류가 발생한다고 생각합니다. – cfbarbero

0

원하는 html 요소를 사용할 수 있습니다. id 및 runat 서버 만 지정하면됩니다. 그러면 유연성이 생깁니다.

+0

네,하지만 HTML로 렌더링하지 않는 컨트롤에 관심이 있습니다. 모든 HTML 컨트롤을 사용할 수 있지만 테이블의 여러 tr 표시/숨기기 예제에서는 각 컨트롤마다 가시성을 설정하는 컨트롤이 하나만 필요합니다. – cfbarbero