2

我通常这样做是为了从布局目录中加载 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 文件。

这有没有可能?我想知道怎么做。谢谢你。

4

2 回答 2

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);
于 2012-05-29T09:14:00.267 回答
0

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

There are some gotchas, like the user control does not have all the events the page does (you'll need to override appropriate methods), the variables on page are not directly accessible (just use user control's Page property), but if the page is not too complicated, the process should be just a repeat of "compile and change".

于 2012-05-29T10:27:48.927 回答