无需请求即可呈现ASPX页面

时间:2011-02-22 15:04:04

标签: c# asp.net

我有一个ASPX页面,我打算用它作为模板来生成一些HTML。我已经定义了我的标记和数据绑定控件,并构建了一个函数来执行所有数据绑定,调用this.Render并返回HTML。从Page_Load调用时,该函数工作正常。

我的意图是绕过页面请求并直接调用方法并获取页面HTML,但是当我在没有发出HTTP请求的情况下调用该函数时,我的服务器端控件都没有被初始化。

有什么方法可以在页面上调用方法,传递一些参数并获取HTML输出而不需要发出HTTP请求。我相信Server.Execute可以做到但我无法找到一种方法来传递params。

我正在调用这个函数

MyPage ThreadHTMLGenerator = new MyPage;
string threadHTML= ThreadHTMLGenerator.GenerateExpandedHTML(param1, param2, param3);

2 个答案:

答案 0 :(得分:9)

您需要使用Server.Execute

var page = new MyPage();
StringWriter writer = new StringWriter();
HttpContext.Current.Server.Execute(page, writer, false);

或者如果你需要传递自己的查询字符串参数,你可以自己做一个WebRequest:

var request = WebRequest.Create("http://www.mysite.com/page.aspx?param1=1&param2=2");
var response = (HttpWebResponse)request.GetResponse ();
var dataStream = response.GetResponseStream ();
var reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
reader.Close();
dataStream.Close();
response.Close();

答案 1 :(得分:2)

前段时间我需要做同样的事情,this article对我帮助很大。它涵盖了您需要做的事情。