2012-05-29 77 views
2

我通常這樣做是爲了從layouts目錄加載一個web用戶控件。如何將一個aspx頁面加載到webpart中

protected override void CreateChildControls() 
{ 
    try 
    { 

     SPSecurity.RunWithElevatedPrivileges(delegate() 
     { 
      base.CreateChildControls(); 
      string strControlReference = "/_layouts/Controls/MyCustomControl.ascx"; 

      //instantiate the user control 
      MyCustomControl ucControl = (MyCustomControl)Page.LoadControl(strControlReference); 

      //add the control to webpart 
      this.Controls.Add(ucControl); 
     }); 
    } 
    catch (Exception ex) 
    { 
     Common.WriteLogEvent(ex); 
    } 

} 

現在我想要做的是,我有一個web表單「_ /佈局/頁/ MyPage.aspx」佈局文件夾下的文件,我想加載該文件,而不是加載一個典型的ascx文件在webpart頁面上。

會有可能嗎?我想知道如何。謝謝。

回答

1

您可以將一個<IFRAME>添加到webpart並將頁面加載到該頁面。

或創建IFRAME編程並以同樣的方式添加它創建的用戶控件:

var pageUrl = .....; // URL to your page 
var literal = new Literal(); 
literal.Text = string.Format("<iframe src='{0}'></iframe>", pageUrl); 
this.Controls.Add(literal); 
+0

我正在尋找一個解決方案,如果可能的話,不會使用iframe。但是,不知何故,這對我的問題有很大的幫助。直到明天,我會等待更好的答案。如果我沒有看到更好的答案,那麼我會將其標記爲答案:) –

0

你不告訴我們,如果「_ /佈局/頁/ MyPage.aspx」正在你的控制。如果是這樣,只需從中創建一個新的用戶控件,然後在舊頁面和Web部件中使用它。

有一些疑難問題,比如用戶控件沒有頁面所做的所有事件(您需要重寫適當的方法),頁面上的變量不能直接訪問(僅使用用戶控件的Page屬性),但如果頁面不是太複雜,那麼這個過程應該只是「編譯和更改」的重複。

+0

我很抱歉,但我似乎並未理解您想要完成的解決方案。 –

相關問題