如何将aspx页面加载到webpart中

时间:2012-05-29 09:11:43

标签: c# asp.net sharepoint-2010 web-parts

我通常这样做是为了从布局目录加载一个Web用户控件。

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);
     }

}

现在我想要做的是,我在layouts文件夹下有一个Web表单“_ / layouts / Page / MyPage.aspx”文件,我想加载这个文件,而不是在webpart页面上加载一个典型的ascx文件。

有可能吗?我想知道怎么做。谢谢。

2 个答案:

答案 0 :(得分:1)

您可以在网站部分添加<IFRAME>并将页面加载到该部分。

或者以编程方式创建IFRAME并以添加用户控件的相同方式添加它:

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

答案 1 :(得分:0)

如果“_ / layouts / Page / MyPage.aspx”在您的控制之下,您不会告诉我们。如果是这样,只需从中创建一个新的用户控件,然后在旧页面和Web部件中使用它。

有一些陷阱,比如用户控件没有页面所有的事件(你需要覆盖适当的方法),页面上的变量不能直接访问(只是使用用户控件的Page属性),但是如果页面不是太复杂,那么这个过程应该只是重复“编译和更改”。