2008-12-17 129 views
1

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

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

+0

我检查了“缩放问题”的定义,并发现这一点。 – Will 2008-12-17 23:21:18

+0

我知道这不是最好的做法,但我正在尝试从子aspx页面更新父aspx页面。我没有找到任何想法。另见:http://stackoverflow.com/questions/375977/calling-a-parent-page-code-behind-method-from-a-child-page-code-behind-aspnet-2 – 2008-12-17 23:29:37

回答

5

尝试使用BuildManager.CreateInstanceFromVirtualPath。示例用法:

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

这回答了这个具体的问题,虽然根据您的意见,我不确定这是你真正想要的。

0

不知道如何使用Reflection来完成它,这可能是可能的,但是您可以使用HttpContext.Server.Execute()将aspx或asp页面的输出捕获到字符串编写器。
我已经使用它来渲染一些复杂的电子邮件模板,但不知道这是否完全符合您的要求。

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

如果从UI.Page的页面背后的代码继承类,你可以用这样的方式: 设置背景,以当前的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() 

所以,你可以有强类型的值,如果你会改变你会被警告的方法的符号。