使用System.Reflection加载ASP.NET 2.0 aspx页面?

时间:2008-12-17 23:11:33

标签: c# asp.net reflection system.reflection

我可以使用System.Reflection在另一个独立的aspx页面中加载一个独立的aspx页面吗?

我正在使用ASP.NET 2.0网站项目模型。

4 个答案:

答案 0 :(得分:5)

尝试使用BuildManager.CreateInstanceFromVirtualPath。样品用法:

Page p = BuildManager.CreateInstanceFromVirtualPath("~/Default.aspx", typeof(Page))

这回答了这个具体问题,但根据你的评论,我不确定这是你真正想要的。

答案 1 :(得分:0)

不知道使用Reflection做这件事,这很可能,但你可以使用HttpContext.Server.Execute()将aspx或asp页面的输出捕获到字符串编写器。
我用它来渲染一些复杂的电子邮件模板,但不知道这是不是你想要的。

答案 2 :(得分:0)

我实施了以下解决方案,这正是我想要做的事情:

using System.Reflection;
using System.Web.Compilation;

Page p = BuildManager.CreateInstanceFromVirtualPath("~/mypage.aspx", typeof(Page)) as Page;
MethodInfo MyMethod = p.GetType().GetMethod("MyMethod");
MyMethod.Invoke(p, null);

答案 3 :(得分:0)

如果你的代码隐藏页面有UI.Page的继承类,你可以这样使用: 将CONTEXT设置为当前的http上下文

Dim hndlr As IHttpHandler = PageParser.GetCompiledPageInstance("~/mypage.aspx", context.Server.MapPath("~/mypage.aspx"), CONTEXT)
Dim ipage As DerivedPage = DirectCast(hndlr, DerivedPage)
ipage.YourProperty= "Hello"
ipage.DoIt()

因此,您可以使用强类型值,如果您更改方法的符号,则会收到警告。