我正在尝试将解析后的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();
?>
欢迎任何建议。
答案 0 :(得分:4)
你试过吗
System.IO.StringWriter htmlStringWriter = new System.IO.StringWriter();
Server.Execute("Page.aspx", htmlStringWriter);
string htmlOutput = htmlStringWriter.GetStringBuilder().ToString();
在Kiyoshi's blog上找到。测试了它 - 并为我工作。另见MSDN
答案 1 :(得分:2)
您需要执行该页面。最简单的方法是:
var writer = new StringWriter();
Server.Execute("/SubmitConfirmation.aspx?appid=" + this.Id, writer );
string str_out = writer.GetStringBuilder().ToString();
答案 2 :(得分:0)
您可以尝试:
WebClient client = new WebClient();
string html = client.DownloadString(@"???"); // your site