页面查看器Web部件不会使用GET参数加载URL

时间:2009-07-17 12:06:09

标签: asp.net sharepoint web-parts

我需要在SharePoint门户中显示外部网站,因此我添加了一个PageViewerWebPart。但该网址包含www.mywebsite.com?login=X&passwd=Y等登录参数。

我尝试在ContentLink PageViewer属性中添加ASP代码:

<WebPartPages:PageViewerWebPart runat="server" ContentLink="<% ="URL" %>" ... />

它返回给我这个错误:服务器标签不能包含&lt;%...%&gt;指令。

是否存在允许使用GET参数加载URL的其他属性? 我可以将此代码放入我的WebPartPage的CodeBehind中吗? 我实际上做错了吗?

任何帮助都会非常苛刻!

蒂莫西·马丁。

2 个答案:

答案 0 :(得分:3)

虽然我认为将用户的凭据放在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页面,如下所示:

  1. Inherits指令的<%@ Page %>属性更改为上述类的完全限定类型名称。它看起来像: MyNameSpace.WebPagePages.MyWebPartPage,MyNameSpace.WebPagePages,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = b538f318242c0b01
  2. 为Web部件提供ID属性,其值与代码隐藏类中Web部件的名称相匹配。在此示例中:<WebPartPages:PageViewerWebPart runat="server" ID="myPageViewerWebPart">
  3. 应该这样做。如果您以前没有这样做过,创建类并将其部署到GAC将是一个棘手的问题,但是当您知道如何操作时它们很容易。像VSeWSSSTSDEVWSPBuilder这样的工具(首先学习一个,然后尝试其他工具)将通过创建WSP文件(SharePoint解决方案)帮助您实现这一目标 - 我强烈建议您采取这种方式的优点。

答案 1 :(得分:0)

如果上面的代码出现在布局页面中,那么是&lt; %%&gt;布局页面中不允许使用。我建议您在服务器端代码中设置链接。但如果您仍想使用&lt; %%&gt;请参阅此link了解如何使其发挥作用。