内容超出ContentPlace - ASP.NET

时间:2011-04-27 13:00:02

标签: asp.net code-behind

我在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" %>

1 个答案:

答案 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();
}

这应该可以解决代码最终出现在页面上的任何奇怪现象。