我可以使用 System.Reflection 在另一个独立的 aspx 页面中加载独立的 aspx 页面吗?
我正在使用 ASP.NET 2.0 网站项目模型。
我可以使用 System.Reflection 在另一个独立的 aspx 页面中加载独立的 aspx 页面吗?
我正在使用 ASP.NET 2.0 网站项目模型。
尝试使用BuildManager.CreateInstanceFromVirtualPath。示例用法:
Page p = BuildManager.CreateInstanceFromVirtualPath("~/Default.aspx", typeof(Page))
这回答了这个特定的问题,尽管根据您的评论,我不确定这是否是您真正想要的。
不知道如何使用反射,这很可能,但您可以使用 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 继承的类作为您的页面代码,您可以使用这种方式: 将 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()
所以你可以有强类型的值,如果你改变方法的符号,你会被警告。