#asp.net #code-behind
#asp.net #скрытый код
Вопрос:
Я использую 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).
Спасибо за вашу помощь.
РЕДАКТИРОВАТЬ———————-
Временное решение
<%= WriteReport()%>
<asp:Table runat="server" ID="testeme">
</asp:Table>
Я добавил фиктивную таблицу (id = testeme), она ничего не делает и в ней ничего нет. Но сейчас это работает, какого черта. Работает только тогда, когда метод указан ниже.
ПРАВКА2———————
Я попытался угадать соответствующие части из главной страницы и разместил их здесь.
<%@ 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:
Вместо того, чтобы вводить код на свою страницу с помощью <%= ... %>
, вы можете использовать <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();
}
Это должно решить любые странности, связанные с тем, где код заканчивается на странице.
Комментарии:
1. Это сработало, но оно по-прежнему отображается под ContentPlace, в нижнем колонтитуле div. Кроме того, если я помещу фиктивную таблицу, она будет работать нормально (таблица должна быть под ней).
2. Для устранения неполадок при рендеринге / размещении на главной странице было бы неплохо просмотреть разметку главной страницы…