Question

Can I load an stand alone aspx page in another stand alone aspx page using System.Reflection?

I am using the ASP.NET 2.0 Web site project model.

Was it helpful?

Solution

Try using BuildManager.CreateInstanceFromVirtualPath. Sample usage:

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

This answers this specific question, although, based on your comments, I'm not sure that this is what you really want.

OTHER TIPS

Don't know about doing it using Reflection, which may well be possible, but you can capture the output of an aspx or asp page to a string writer using HttpContext.Server.Execute().
I have used this for rendering some complex email templates, but don't know if that is quite what you are after.

If you have a inherited class from UI.Page for your code behind page, you could use this way: set CONTEXT to your current http context

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()

So you can have strong typed values and, if you'll change the sign of a method you'll be warned.

I implemented the following solution and it is what I exactly want to do:

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);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top