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 回答