2013-02-19 68 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/)”,其中的共识是“不,他们不应该”。 – 2013-02-19 14:33:16

+0

我不觉得有足够的信心把它作为答案,但看看Html.Partial和Html.RenderPartial方法 – jrajav 2013-02-19 14:39:35

回答

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 2013-02-19 19:47:39

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();