2009-07-17 4 views
2

Ich muss eine externe Website in meinem SharePoint-Portal anzeigen, daher habe ich ein PageViewerWebPart hinzugefügt. Aber die URL enthält Login-Parameter wie www.mywebsite.com?login=X&passwd=Y.PageViewer WebPart lädt keine URL mit GET-Parametern

Ich habe versucht, ASP-Code auf der Contentviewer Eigenschaft wie das hinzuzufügen:

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

Es gibt mir diese Fehlermeldung: Server-Tags können nicht enthalten <% ...%> Anweisungen.

Gibt es andere Eigenschaften, die URL mit GET-Parameter laden können? Kann ich diesen Code in den CodeBehind meiner WebPartPage einfügen? Mache ich es wirklich falsch ...?

Jede Hilfe wird sehr geschätzt!

Timothée Martin.

+0

Ist Sharepoint, der den Fehler oder AsP wirft? –

+0

Sharepoint fängt diesen Fehler ab und zeigt ihn im gemeinsamen Sharepoint-Stil an ... –

+0

Erstellen Sie die URL dynamisch? Wenn ja, wo setzt du den Code, um die URL zu erstellen? – dariom

Antwort

3

Während ich es ist eine schlechte Idee, denken die Anmeldeinformationen eines Benutzers in einer URL zu setzen (jemand wird diese in der Lage zu sehen, von der Seite des HTML-Quellcode sehen) ist hier, wie Sie erreichen können, was Sie tun möchten:

Erstellen Sie ein neues Klassenbibliotheksprojekt mit einer Klasse, die von Microsoft.SharePoint.WebPartPages.WebPartPage erbt. Etwas wie:

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; 
     } 
    } 
} 

Sie müssen die Assembly signieren und sie auf dem GAC bereitstellen. Die Verwendung von SharePoint Solution (WSP) ist der empfohlene Weg, dies zu tun (aber nicht der Punkt dieser Antwort).

Sie müssen nun die ASPX-Seite mit Ihrem Web-Teil wie folgt ändern:

  1. Ändern des Inherits Attribut der <%@ Page %> Richtlinie auf die voll qualifizierten Typnamen der oben genannten Klasse. Es wird in etwa so aussehen: MyNameSpace.WebPagePages.MyWebPartPage, MyNameSpace.WebPagePages, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = b538f318242c0b01
  2. Geben Sie den Webpart ein ID Attribut mit einem Wert, der den Namen der Spiele Webpart in der Code-Behind-Klasse. In diesem Beispiel: <WebPartPages:PageViewerWebPart runat="server" ID="myPageViewerWebPart">

Das sollte es tun. Wenn Sie es vorher noch nicht gemacht haben, wird das Erstellen der Klasse und das Bereitstellen in der GAC die kniffligen Teile sein, aber sie sind einfach, wenn Sie wissen, wie. Tools wie VSeWSS, STSDEV und WSPBuilder (lernen Sie zuerst und dann versuchen Sie die anderen) wird Ihnen helfen, dies zu erreichen, indem Sie WSP-Dateien erstellen (SharePoint-Lösungen) - etwas, das ich Ihnen sehr empfehlen kann.

+0

Vielen Dank! Ich werde es jetzt versuchen! =) –

0

Wenn der obige Code in der Layout-Seite vorhanden ist, dann sind die < %%> in Layout-Seiten nicht erlaubt. Ich empfehle Ihnen, den Link im serverseitigen Code festzulegen. Aber wenn Sie immer noch die < %%> verwenden möchten, beziehen Sie sich auf link auf, wie es funktioniert.

+0

Danke für Ihre Antwort. Ich habe bereits versucht, den Code in den Link beschrieben, aber es funktioniert nicht. Es ermöglicht Ihnen, die <% %> überall, aber nicht in den WebPart-Tags zu setzen. Das Problem ist, dass ich die serverseitige Codedatei nicht finde. Meine WebPartPage ist in einer Bibliothek auf meiner TeamSite gespeichert und das erste Tag bezieht sich nicht auf eine CodeBehind-Datei. Mit freundlichen Grüßen Timothée Martin. –