2009-03-10 3 views
1

포럼에 게시 된 메시지를 표시하는 프로그램이 있습니다. 바로 지금, 내가 원하는 HTML을 삽입하는 코드 뒤에 Response.Write 메서드를 사용하고 있습니다. 하지만 (코드 숨김/.NET의 디자인 분리 기능의 정신이 아니기 때문에) 코드 뒤에 HTML을 넣는 것을 피하는 편이 낫습니다. 콘텐트 자리 표시자를 사용하고 자식 컨트롤을 동적으로 삽입하고 싶습니다. 그러나, 나는 그것들을 나란히, 그리고 차례로 삽입하는 것처럼 보일 뿐이다.자리 표시 자 컨트롤 및 자식 컨트롤 정렬

테이블 열 1       테이블 열이
사용자 이름 : [사용자 이름]      
[MessageSubject]
에 게시 됨 : [시간적으로]
사용자 선호도 I은 다음과 같습니다 뭔가를하고 싶습니다 [UserRating] 내가 달성하기 위해 보일 수있는 유일한 방법은

그러나입니다 :

사용자 이름 : [사용자 이름]에 게시 됨 : [시간적으로] U 등급 [UserRating] [MessageSubject], 링크 또는 서식 지정 없음.

어떻게 단락, 줄 바꿈, 양식 단추 및 일반 하이퍼 링크를 콘텐츠 자리 표시 자에 넣고 원하는 방식으로 정렬합니까?

답변

3

당신은 int와 같은 방식으로 작업을 수행합니다.예를 들어, 영문 페이지 : 코드가 영리 될 수 물론

<asp:Table runat="server"> 
    <asp:TableRow runat="server"> 
    <asp:TableCell runat="server"> 
     <asp:Label runat="server" Text="Username:" /> 
    </asp:TableCell> 
    <asp:TableCell runat="server"> 
     <asp:TextBox runat="server" ID="userNameTextBox" /> 
    </asp:TableCell> 
    </asp:TableRow> 
</asp:Table> 

는,이 점을 설명하기 위해 단지이다

Table table = new Table(); 
TableRow row1 = new TableRow(); 
table.Rows.Add(row1); 
TableCell cell1 = new TableCell(); 
TableCell cell2 = new TableCell(); 
row1.Cells.Add(cell1); 
row1.Cells.Add(cell2); 
Label label1 = new Label(); 
label1.Text = "Username:"; 
cell1.Controls.Add(label1); 
TextBox textBox1 = new TextBox(); 
textBox1.ID = "userNameTextBox"; 
cell2.Controls.Add(textBox1); 
// and so on... 
myPlaceholder.Controls.Add(table); 

는 해당하는 것입니다. 레이아웃을 제어하기 위해 선언적으로 빌드 할 수있는 컨트롤의 계층 구조는 프로그래밍 방식으로도 수행 할 수 있습니다.

+0

이것이 최고의 대답이라고 생각합니다. 코드 테이블에 ASP 테이블 컨트롤을 넣으면 발진을 제외하고 내 모든 문제가 해결됩니다. . . –

+0

약간의 하이드로 코티 존은 발진 (또는 페니실린의 강력한 복용량과 재 작성된 스타일 시트)을 돌봐야합니다. – Traingamer

1

Web Parts에 대한 개요를보십시오.

일부는 저와 논쟁이나 저를 아래로 투표를하지만, 테이블이 아닌 수

<table> 
<tr><td>Table Column 1</td><td>Table Column 2</td></tr> 
<tr><td>Username:</td><td>[UserName]</td></tr> 
<tr><td></td><td><p>[MessageSubject]</td></tr> 
<tr><td>Posted On:</td><td>[PostDate]</td></tr> 
<tr><td>User Rating:</td><td>[UserRating]</td></tr> 
</table> 

이 이런 식으로 뭔가를 생성합니다 : 또는 더 간단하게, 단지 User Controls

0

당신은 이런 일을 할 수있는 사용 악마, 그것은 당신이 그것을 사용하는 방법입니다.

+0

이것은 표 형식의 데이터입니까? –

+0

예, 데이터를 행/격자 형식으로 표시하고 있습니다. – Chris

+0

더 좋은 제안이 있습니까? – Chris

0

Tom, 본질적으로 당신이 시도하는 것과 동일한 패턴을 구현했습니다.

중요한 차이점은 ASPX와 코드 숨김이 아니라 UI와 비즈니스 논리 사이에 있다는 점입니다. 실제로 ASPX 페이지의 코드 숨김은 이며 모두 적절한 UI 동작을 보장하기 위해입니다. 더욱이, 이와 관련하여 순수하게 유지하려는 시도는 귀하가 추구하는 디자인을 실행하지 못하게합니다. 결국 레이아웃 작업을하고 결코 후회하지 않기 위해 내 컨트롤 사이에 공백 HTML을 삽입하는 결과를 낳았습니다.

ASPX/코드 숨김 구별에 초점을 맞추기보다는 비즈니스 로직에서 UI 코드를 추출하는 데 중점을 두는 것이 좋습니다. 이렇게하려면 클래스 라이브러리 (DLL) 프로젝트를 솔루션에 추가 한 다음 BIN 디렉터리에 DLL에 대한 참조를 배치하기 만하면됩니다. 그런 다음 ASPX 페이지에서 DLL을 호출하여 비즈니스 규칙을 실행하고 데이터베이스에서 정보를 가져옵니다. 은 모범 사례 관점에서 의미가있는 구분입니다.

0

나는 이것을 UserControl로 바꾸는 것이 아마도 올바른 방법 일 것이라고 동의한다. 나는 유사한 HTML을 출력 제안 것이 다음

<style> 
    .message .column1 
    { 
     display: inline-block; 
     width: 150px; 
    } 
    .message .column2 
    { 
     display: inline-block; 
     width: 300px; 
    } 
</style> 

당신은 <div> 태그가 일반적으로 수행하는 방법 "에 대한 해답이라고 볼 수 있습니다 :

<div class="message"> 
    <div> 
     <span class="column1">Username:</span> 
     <span class="column2">[UserName]</span> 
    </div> 
    <div>[MessageSubject]</div> 
    <div> 
     <span class="column1">Posted On:</span> 
     <span class="column2">[PostedOn]</span> 
    </div> 
    <div> 
     <span class="column1">User Rating:</span> 
     <span class="column2">[UserRating]</span> 
    </div> 
</div> 

당신은 다음과 같은 CSS를 통해 스타일을 적용 할 수 있습니다 나는 이것을 다음 줄에 넣었습니까? "

편집 : 웹 레이아웃을 처음 접하는 경우 나중에 blueprint을 빨리 발견하는 것이 좋습니다.