2009-07-17 45 views
2

我需要在SharePoint門戶中顯示外部網站,因此我添加了PageViewerWebPart。但是該URL包含登錄參數,如www.mywebsite.com?login=X&passwd=YPageViewer WebPart不會使用GET參數加載URL

我試圖在ContentLink PageViewer財產一樣,添加ASP代碼:

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

它返回我這個錯誤:服務器標記不能包含<%...%>指令。

是否存在允許使用GET參數加載URL的其他屬性? 我可以把這段代碼放到WebPartPage的CodeBehind中嗎? 我是否真的做錯了...?

任何幫助將是非常apreciated!

TimothéeMartin。

+0

是拋出錯誤的sharepoint,還是AsP? – 2009-07-17 12:17:05

+0

Sharepoint捕獲此錯誤並使用常見SharePoint風格顯示它... – 2009-07-17 12:48:56

+0

您是否正在動態創建URL?如果你是,你在哪裏放置代碼來創建URL? – dariom 2009-07-17 13:06:33

回答

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. 更改<%@ Page %>指令的Inherits屬性上面的類的完全限定類型名稱。它看起來是這樣的:MyNameSpace.WebPagePages.MyWebPartPage,MyNameSpace.WebPagePages,版本= 1.0.0.0,文化=中性公鑰= b538f318242c0b01
  2. 給Web部件的屬性ID與的名稱相匹配的值Web部分在代碼隱藏類中。在這個例子中:<WebPartPages:PageViewerWebPart runat="server" ID="myPageViewerWebPart">

這應該這樣做。如果您之前沒有做過,創建類並將其部署到GAC將是棘手的問題,但如果您知道如何,它們很容易。諸如VSeWSSSTSDEVWSPBuilder之類的工具(先學習,然後再嘗試其他的工具)將幫助您通過創建WSP文件(SharePoint解決方案)來實現這一目標 - 我強烈建議您利用此功能。

0

如果上述代碼出現在佈局頁面中,則佈局頁面中不允許有< %%>。我建議您在服務器端代碼中設置鏈接。但如果您仍想使用< %%>請參閱link瞭解如何使其工作。