Frage

Kann ich eine Stand-alone-aspx Seite in einem anderen Stand-alone aspx Seite laden System.Reflection mit?

Ich bin mit dem ASP.NET 2.0-Website Projektmodell.

War es hilfreich?

Lösung

Versuchen Sie BuildManager.CreateInstanceFromVirtualPath . Verwendungsbeispiel:

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

Diese beantwortet diese spezielle Frage, obwohl, basierend auf Ihre Kommentare, ich bin nicht sicher, dass das ist, was Sie wirklich wollen.

Andere Tipps

Sie wissen nicht, darüber mit Reflexion zu tun, was gut möglich sein kann, aber Sie können die Ausgabe einer aspx oder ASP-Seite in einem String Writer HttpContext.Server.Execute () erfassen.
Ich habe dies verwendet für einige komplexe E-Mail-Vorlagen zu machen, aber ich weiß nicht, ob das so ist, wie Sie nach.

Wenn Sie eine vererbte Klasse von UI.Page für Ihren Code hinter Seite haben, können Sie auf diese Weise verwenden: gesetzt CONTEXT zu Ihrem aktuellen http Kontext

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 können Sie stark typisierte Werte haben, und wenn Sie das Vorzeichen einer Methode ändern werden Sie gewarnt werden.

I implementiert die folgende Lösung, und es ist das, was ich genau tun will:

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);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top