1

我的应用程序使用 ContentPlaceHolder 对齐为中心的母版页。但是,每当我使用 Response.Write() 函数在屏幕上写一些东西时,整个页面都会更改为左对齐。我在想,jquery ajax 函数可以让我将 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

4 回答 4

3

Response.Write()将数据直接写入输出流,因此取决于在页面生命周期中调用它时的 om,数据最终可能会在页面上的任何位置破坏标记。

于 2011-04-27T20:42:42.767 回答
2

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

在网络表单中:

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

在后面的代码中:

test.innerHTML += somecontent;

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

于 2011-04-27T20:43:56.243 回答
1

一个简单的方法是在你的页面上放置一个面板,并像这样向你的面板添加一个文字控件:

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

这样,文本将准确显示在 Panel 放置在页面上的位置。

于 2011-04-27T20:44:59.707 回答
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>
于 2011-04-27T20:54:36.833 回答