2011-04-27 69 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標籤被錯過。 – 2011-04-27 20:41:41

+0

@ Rory:我認爲沒有必要,只需使用VS的默認模板創建一個新的Web應用程序,並在'Response.Write'中寫入任何內容即可解決問題。 – Homam 2011-04-27 20:46:24

+0

@霍姆:沒錯!請避免使用此功能。 – 2011-04-27 20:54:56

回答

2

避免使用Response.Write()將內容添加到頁面,而應該將內容添加到服務器控件。

在Web表單:

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

在後面的代碼:

test.innerHTML += somecontent; 

這將讓您爲服務器控件設置的CSS定義中的內容。

3

Response.Write()寫入數據直接輸出流,所以要根據OM當你調用它的頁面生命週期,數據可以結束enywhere頁面中的任何破壞的標記上。

+0

正如我試過的,無論你在Response.Write()中添加什麼東西,align都會變成左邊的。 – Homam 2011-04-27 20:45:40

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>