2013-02-19 4 views
2

Я пытаюсь загрузить проанализированный файл aspx в строку. Причина этого в том, что у меня есть страница с достаточным количеством html на ней, которая также имеет разделы, которые необходимо обработать, чтобы вставить правильную информацию. Затем эта страница должна отображаться в качестве страницы подтверждения, которая также отправляется в электронном письме с подтверждением, когда пользователь отправляет форму.Как загрузить анализируемый aspx в строковую переменную

Показать страницу подтверждения достаточно просто, но моя идея предотвратить дублирование кода заключается в том, чтобы отобразить файл aspx в строковой переменной для использования в качестве содержимого электронной почты.

Я понимаю, что я мог бы добавить все содержимое в виде огромной многострочной строки и загрузить ее на страницу aspx, а затем в электронную почту, но это решение кажется мне грязным и потребует повторной компиляции приложения. Я когда-либо хочу изменить контент.

Возможно, кто-то может предложить лучший способ добиться того, что я пытаюсь?

Код я пришел с ниже, но я нит уверен, что это можно как-то поймать выход из ProcessRequest прежде чем он будет отправлен в браузер:

IHttpHandler handler = PageParser.GetCompiledPageInstance("/SubmitConfirmation.aspx?appid=" + this.Id, "SubmitConfirmation.aspx", HttpContext.Current); 
handler.ProcessRequest(HttpContext.Current); 
string str_out = ???; 

В основном то, что я пытаюсь для достижения того же, что и следующий код PHP:

<?php 
ob_start(); 
include("SubmitConfirmation.php"); 
$str_out = ob_get_contents(); 
ob_end_clean(); 
?> 

Любые предложения приветствуются.

+0

Я отредактировал ваше название. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

+0

Я не уверен в этом, чтобы выразить это как ответ, но посмотрите на методы Html.Partial и Html.RenderPartial – jrajav

ответ

4

ли вы попробовать

System.IO.StringWriter htmlStringWriter = new System.IO.StringWriter(); 
Server.Execute("Page.aspx", htmlStringWriter); 
string htmlOutput = htmlStringWriter.GetStringBuilder().ToString(); 

найденную на Kiyoshi's blog. Протестировал его - и работал на меня. См MSDN тоже

+0

Спасибо. Работал как шарм. Спасибо всем за вашу помощь. – Blazanor

0

Вы можете попробовать:

WebClient client = new WebClient(); 
string html = client.DownloadString(@"???"); // your site 
2

Вы должны выполнить эту страницу. Самый простой способ:

var writer = new StringWriter(); 

Server.Execute("/SubmitConfirmation.aspx?appid=" + this.Id, writer); 

string str_out = writer.GetStringBuilder().ToString(); 
Смежные вопросы