Могу ли я загрузить автономную страницу aspx на другую автономную страницу aspx с помощью System.Reflection?
Я использую модель проекта веб-сайта ASP.NET 2.0.
Могу ли я загрузить автономную страницу 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);