我在VS 2008上,Windows Xp。
我的页面:
<asp:Content runat="server" ContentPlaceHolderID="ContentPlaceHolder1">
<%= WriteReport()%>
<%= "Hellooo" %>
</asp:Content>
代码隐藏:
public string WriteReport()
{
StringWriter swriter = new StringWriter();
using (HtmlTextWriter hwriter = new HtmlTextWriter(swriter))
{
//Write a table...
}
return swriter.ToString();
}
有趣的是“Heloo”在contentPlace中,但方法的返回却没有。它位于ContentPlace的div下面(最后是页脚div)。
感谢您的帮助。
EDIT ----------------------
临时解决方案
<%= WriteReport()%>
<asp:Table runat="server" ID="testeme">
</asp:Table>
我添加了一个虚假表(id = testeme),它什么也没做,并且没有任何内容。但它现在有效,到底是怎么回事。仅在方法下方有效。
EDIT2 --------------------
我试图从MasterPage猜测相关部分并将它们放在这里。
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="MasterPage.master.cs" Inherits="MyAppV2.Views.MasterPage" %>
<div id="general">
<form id="form1" runat="server" enctype="multipart/form-data">
<div id="main">
<div>
<asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
</asp:contentplaceholder>
</div>
</div>
</form>
</div>
<div id="footer">
<p>MYFOOTER</p>
</div>
使用母版页的视图的第一行:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="MP5._Default" MasterPageFile="~/MasterPage.Master" %>
答案 0 :(得分:0)
您可以使用<%= ... %>
标记,而不是使用<asp:literal>
将代码注入您的网页:
<asp:Content runat="server" ContentPlaceHolderID="ContentPlaceHolder1">
<asp:Literal id="MyReport" runat="server" />
</asp:Content>
然后,您可以使用text属性从代码隐藏中写入。您可以在Page_Load中调用WriteReport()方法。
public void WriteReport()
{
StringWriter swriter = new StringWriter();
using (HtmlTextWriter hwriter = new HtmlTextWriter(swriter))
{
//Write a table...
}
MyReport.Text = swriter.ToString();
}
这应该可以解决代码最终出现在页面上的任何奇怪现象。