繁体   English   中英

如何将aspx页面加载到Webpart中

[英]how to load an aspx page into the webpart

我通常这样做是为了从布局目录加载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);
     }

}

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

这有没有可能? 我想知道如何。 谢谢。

您可以在Webpart中添加<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);

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM