如何将 ASPX 页加载到 Web 部件中
本文关键字:Web 加载 ASPX | 更新日期: 2023-09-27 18:35:32
我通常这样做是为了从布局目录加载 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"文件,我想加载此文件而不是在 Web 部件页面上加载典型的 ascx 文件。
可能吗?我想知道怎么做。谢谢。
您可以向 Web 部件添加<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 属性),但如果页面不是太复杂,该过程应该只是重复"编译和更改"。