2011-04-27 2 views
1

내 응용 프로그램은 ContentPlaceHolder 정렬이 중심 인 마스터 페이지를 사용합니다. 하지만 언제든지 Response.Write() 함수를 사용하여 화면에 무언가를 쓰면 전체 페이지가 방금 왼쪽으로 정렬되도록 변경됩니다. 나는 jquery ajax 함수를 사용하여 html을 페이지를 파괴하지 않고 일부분으로 작성할 수 있다고 생각하고있다. 그러나 더 나은 해결책이 있는지 알고 싶습니다. 어떤 생각? 여기 코드 페이지의 코드입니다 :왜 Response.Write가 전체 페이지의 정렬을 파괴합니까?

DirectoryInfo di = new DirectoryInfo("e:/asdf"); 
FileInfo[] rgFiles = di.GetFiles("*.*"); 
if (rgFiles != null) 
{ 
    sb.Append("<span class='SubTitle'>Your attachments list:</span>"); 
    foreach (FileInfo fi in rgFiles) 
    { 
     sb.AppendFormat("<br><a href='e:\\asdf\\" + fi.Name + "'>" 
         + fi.Name + "</a>"); 
    } 
} 
Response.Write("<span style='position:absolute;top:200px;left:200px'>" 
       + sb + "</span>"); 
+0

당신은 당신의 코드를 게시 할 수 없습니다. 이것에 대한 많은 이유가 있습니다. 내 추측은 당신의 response.write가 여는/닫는 HTML 태그를 놓치게하는 것입니다. –

+0

@ Rory : VS의 기본 템플릿으로 새 웹 응용 프로그램을 만들고 Response.Write에 아무 것도 쓸 필요가 없다고 생각합니다. 문제가 있습니다. – Homam

+0

@Homam : 맞습니다! 이 기능을 사용하지 마십시오. –

답변

2

Response.Write()를 사용하여 페이지에 내용을 추가하지 말고 서버 컨트롤에 내용을 추가해야합니다. 웹 양식에서

:

<div runat="server" id="test" class="someclass"></div> 

뒤에 코드에서 :

test.innerHTML += somecontent; 

이 해당 서버 컨트롤에 설정된 CSS 정의 내에서 콘텐츠를 유지합니다.

3

Response.Write() 그래서 당신은 페이지의 라이프 사이클에 전화를 할 때 엄마를 따라 직접 출력 스트림에 데이터를 기록, 데이터는 마크 업을 파괴 페이지에 enywhere를 끝낼 수 있습니다 .

+0

시도한 것처럼,'Response.Write()'에 무언가를 추가 할 때마다 정렬이 왼쪽으로 변경됩니다. – Homam

1

이 작업을 수행하는 쉬운 방법은 귀하의 페이지에 패널을 배치하고이처럼 패널에 문자 컨트롤을 추가하는 것입니다 : 패널이 배치되는 텍스트가 정확히 표시됩니다

myPanel.Controls.Add(new LiteralControl("Some text to write out")); 

이 방법 페이지.

0

일반적으로 LiteralControl을 자리 표시 자 또는 패널 ASP 컨트롤에 추가하여이 작업을 수행합니다.

<asp:Content ID="Content1" ContentPlaceHolderID="PlaceHolder" Runat="Server"> 

aspx 페이지 (여기에서 마스터 페이지를 사용한다고 가정). 그리고 나서 :

LiteralControl lc = new LiteralControl("<h1>Some HTML</h1>"); 
this.Content1.Controls.Add(lc); 

당신의 코드 숨김에서. 그냥 패널에 추가하려면

이 아니면 :

<asp:Panel ID="Panel1" runat="server"></asp:Panel> 
관련 문제