Carregar uma página 2.0 aspx ASP.NET usando System.Reflection?
-
22-08-2019 - |
Pergunta
Posso carregar uma página aspx autônomo em outra página aspx autônomo usando System.Reflection?
Eu estou usando o modelo de projeto 2.0 site Web ASP.NET.
Solução
Tente usar BuildManager.CreateInstanceFromVirtualPath . Exemplo de uso:
Page p = BuildManager.CreateInstanceFromVirtualPath("~/Default.aspx", typeof(Page))
Isto responde a esta pergunta específica, embora, com base em seus comentários, não tenho a certeza que é isso que você realmente quer.
Outras dicas
Não sei quanto a fazê-lo usando reflexão, que pode muito bem ser possível, mas você pode capturar a saída de uma página aspx ou asp para um escritor string usando HttpContext.Server.Execute ().
Eu tenho usado este para a prestação de alguns modelos de email complexas, mas não sei se isso é exatamente o que você está depois.
Se você tem uma classe herdada de UI.Page para o seu código por trás da página, você pode usar esse caminho: definir o contexto para o seu contexto http atual
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()
Então você pode ter valores digitados fortes e, se você vai mudar o sinal de um método que você vai ser avisado.
Eu implementei a seguinte solução e é o que eu exatamente quero fazer:
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);