2

解析されたaspxファイルを文字列にロードしようとしています。これは、正しい情報を挿入するために処理する必要のあるセクションも含まれている、かなりの量のhtmlを含むページがあるためです。このページは、確認ページとして表示する必要があります。また、ユーザーがフォームを送信したときに確認メールで送信する必要があります。

確認ページの表示は非常に簡単ですが、コードの重複を防ぐための私の考えは、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();
?>

どんな提案でも大歓迎です。

4

3 に答える 3

4

試しましたか

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

Kiyoshiのブログで見つかりました。それをテストしました-そして私のために働きました。MSDNも参照してください

于 2013-02-19T14:41:50.797 に答える
2

ページを実行する必要があります。最も簡単な方法は次のとおりです。

var writer = new StringWriter();

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

string str_out = writer.GetStringBuilder().ToString();
于 2013-02-19T14:47:11.007 に答える
0

あなたが試すことができます:

WebClient client = new WebClient();
string html = client.DownloadString(@"???"); // your site
于 2013-02-19T14:42:09.920 に答える