Контент, получаемый за пределами ContentPlace - ASP.NET - PullRequest
0 голосов
/ 27 апреля 2011

Я на 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, а возвращение метода - нет. Это место под div в ContentPlace (заканчивается в 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 голосов
/ 27 апреля 2011

Вместо введения кода на страницу с помощью <%= ... %>, вы можете использовать тег <asp:literal>:

<asp:Content runat="server" ContentPlaceHolderID="ContentPlaceHolder1">
    <asp:Literal id="MyReport" runat="server" />
</asp:Content>

Затем вы можете писать в него из своего кода, используя свойство text. Вы можете вызвать метод WriteReport () из Page_Load.

public void WriteReport()
{

  StringWriter swriter = new StringWriter();
  using (HtmlTextWriter hwriter = new HtmlTextWriter(swriter))
  {
      //Write a table...
  }

  MyReport.Text = swriter.ToString();
}

Это должно решить любые странности того, где код заканчивается на странице.

...