我的应用程序使用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>");
答案 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>