我需要在我的 SharePoint 门户中显示外部网站,因此我添加了 PageViewerWebPart。但 URL 包含登录参数,如 www.mywebsite.com?login=X&passwd=Y .
我尝试在 ContentLink PageViewer 属性中添加 ASP 代码,如下所示:
<WebPartPages:PageViewerWebPart runat="server" ContentLink="<% ="URL" %>" ... />
它返回给我这个错误:服务器标签不能包含 <% ... %> 指令。
是否存在其他允许使用 GET 参数加载 URL 的属性? 我可以将此代码放入 WebPartPage 的 CodeBehind 中吗? 我真的做错了吗...?
任何帮助将非常感激!
蒂莫西·马丁。
最佳答案
虽然我认为将用户的凭据放在 URL 中是一个坏主意(任何人都可以通过查看页面的 HTML 源代码来看到这一点),但您可以通过以下方式完成您想要做的事情:
使用继承自 Microsoft.SharePoint.WebPartPages.WebPartPage
的类创建一个新的类库项目。像这样的东西:
namespace MyNameSpace.WebPagePages
{
public class MyWebPartPage : Microsoft.SharePoint.WebPartPages.WebPartPage
{
protected Microsoft.SharePoint.WebPartPages.PageViewerWebPart myPageViewerWebPart;
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
// logic to create your URL
string url = "http://blah/blah";
// set the URL
myPageViewerWebPart.ContentLink = url;
}
}
}
您需要对程序集进行签名并将其部署到 GAC。建议使用 SharePoint 解决方案 (WSP) 来执行此操作(但不是本答案的重点)。
您现在需要修改包含 Web 部件的 ASPX 页面,如下所示:
- 更改
Inherits
<%@ Page %>
的属性指向上述类的完全限定类型名称的指令。它看起来像:MyNameSpace.WebPagePages.MyWebPartPage, MyNameSpace.WebPagePages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b538f318242c0b01 - 为 Web 部件指定
ID
属性的值与代码隐藏类中 Web 部件的名称相匹配。在此示例中:<WebPartPages:PageViewerWebPart runat="server" ID="myPageViewerWebPart">
应该可以了。如果您以前没有这样做过,那么创建类并将其部署到 GAC 将是比较棘手的部分,但是当您知道如何操作时,它们就会很容易。像VSeWSS这样的工具, STSDEV ,和 WSPBuilder (先学习一个,然后尝试其他)将帮助您通过创建 WSP 文件(SharePoint 解决方案)来实现这一目标 - 我强烈建议您利用这一点。
关于asp.net - 页面查看器 Web 部件不会加载带有 GET 参数的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1142865/