2008-12-17 96 views
1

我可以使用System.Reflection在另一個獨立的aspx頁面加載一個獨立的aspx頁面嗎?使用System.Reflection加載ASP.NET 2.0 aspx頁面?

我正在使用ASP.NET 2.0網站項目模型。

+0

我檢查了「縮放問題」的定義,並發現這一點。 – Will 2008-12-17 23:21:18

+0

我知道這不是最好的做法,但我正在嘗試從子aspx頁面更新父aspx頁面。我沒有找到任何想法。另見:http://stackoverflow.com/questions/375977/calling-a-parent-page-code-behind-method-from-a-child-page-code-behind-aspnet-2 – 2008-12-17 23:29:37

回答

5

嘗試使用BuildManager.CreateInstanceFromVirtualPath。示例用法:

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

這回答了這個具體的問題,雖然根據您的意見,我不確定這是你真正想要的。

0

不知道如何使用Reflection來完成它,這可能是可能的,但是您可以使用HttpContext.Server.Execute()將aspx或asp頁面的輸出捕獲到字符串編寫器。
我已經使用它來渲染一些複雜的電子郵件模板,但不知道這是否完全符合您的要求。

0

我採取了以下解決方案,它是我真正想要做的:

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

如果從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() 

所以,你可以有強類型的值,如果你會改變你會被警告的方法的符號。