Вопрос

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

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

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);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top