Загрузить ASPX-страницу ASP.NET 2.0 с помощью System.Reflection? - PullRequest
1 голос
/ 18 декабря 2008

Можно ли загрузить отдельную страницу aspx в другую отдельную страницу aspx с помощью System.Reflection?

Я использую модель проекта веб-сайта ASP.NET 2.0.

Ответы [ 4 ]

5 голосов
/ 18 декабря 2008

Попробуйте использовать BuildManager.CreateInstanceFromVirtualPath . Пример использования:

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

Это отвечает на этот конкретный вопрос, хотя, основываясь на ваших комментариях, я не уверен, что это то, что вы действительно хотите.

0 голосов
/ 18 декабря 2008

Если у вас есть унаследованный класс от 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()

Таким образом, вы можете иметь строго типизированные значения и, если вы измените знак метода, вы будете предупреждены.

0 голосов
/ 18 декабря 2008

Я реализовал следующее решение, и именно это я и хочу сделать:

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 голосов
/ 18 декабря 2008

Не знаю, как это сделать с помощью Reflection, что вполне возможно, но вы можете записать вывод aspx или asp-страницы в устройство записи строк, используя HttpContext.Server.Execute (). Я использовал это для рендеринга некоторых сложных шаблонов электронной почты, но не знаю, действительно ли это то, что вам нужно.

...