我可以使用System.Reflection在另一个独立的aspx页面加载一个独立的aspx页面吗?使用System.Reflection加载ASP.NET 2.0 aspx页面?
我正在使用ASP.NET 2.0网站项目模型。
我可以使用System.Reflection在另一个独立的aspx页面加载一个独立的aspx页面吗?使用System.Reflection加载ASP.NET 2.0 aspx页面?
我正在使用ASP.NET 2.0网站项目模型。
尝试使用BuildManager.CreateInstanceFromVirtualPath。示例用法:
Page p = BuildManager.CreateInstanceFromVirtualPath("~/Default.aspx", typeof(Page))
这回答了这个具体的问题,虽然根据您的意见,我不确定这是你真正想要的。
不知道如何使用Reflection来完成它,这可能是可能的,但是您可以使用HttpContext.Server.Execute()将aspx或asp页面的输出捕获到字符串编写器。
我已经使用它来渲染一些复杂的电子邮件模板,但不知道这是否完全符合您的要求。
我采取了以下解决方案,它是我真正想要做的:
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);
如果从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()
所以,你可以有强类型的值,如果你会改变你会被警告的方法的符号。
我检查了“缩放问题”的定义,并发现这一点。 – Will 2008-12-17 23:21:18
我知道这不是最好的做法,但我正在尝试从子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