为什么Response.Write会破坏整个页面的对齐?

时间:2011-04-27 20:38:36

标签: c# .net response.write

我的应用程序使用ContentPlaceHolder对齐的母版页。但无论何时,我都使用Response.Write()函数在屏幕上写东西,整个页面只是改为左对齐。我在想,jquery ajax函数可以让我在没有destroy对齐的情况下将html写入页面的某些部分。但我想知道是否有更好的解决方案。任何的想法? 这是代码页中的代码:

 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>");

4 个答案:

答案 0 :(得分:3)

Response.Write()将数据直接写入输出流,因此根据您在页面生命周期中调用它的时间,数据最终可能会破坏标记。

答案 1 :(得分:2)

避免使用Response.Write()向页面添加内容,而应将内容添加到服务器控件。

在网络表单中:

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

在背后的代码中:

test.innerHTML += somecontent;

这将使您的内容保持在为该服务器控件设置的CSS定义中。

答案 2 :(得分:1)

一种简单的方法是在您的页面上放置一个Panel,并向您的面板添加一个文字控件,如下所示:

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

通过这种方式,文本将准确显示在面板放置在页面上的位置。

答案 3 :(得分:0)

我通常通过向占位符或面板asp控件添加LiteralControl来实现此目的。

<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>