Freigeben über


Exemplarische Vorgehensweise: Erstellen einer Websitedefinition mit zusätzlichen Inhalten

In dieser exemplarischen Vorgehensweise wird erläutert, wie eine umfassendere Sitedefinition erstellt wird, die mehrere Elemente integriert, die Sie einer Sitedefinition hinzufügen könnten. Es handelt sich um eine Mitarbeiter-Locator-Sitedefinition, die Ihnen ermöglicht, Mitarbeiter auf einer Bing-Karte auf Grundlage des Namens und der Region des Lands, in dem sie arbeiten, zu suchen.

Diese exemplarische Vorgehensweise enthält die folgenden Aufgaben:

  • Erstellen einer Websitedefinition mit der Visual Studio-Projektvorlage.

  • Hinzufügen und Integrieren einer benutzerdefinierten Gestaltungsvorlage in die Projektmappe.

  • Hinzufügen eines visuellen Webparts zur Lösung.

  • Hinzufügen von benutzerdefinierten Feldern zur Projektmappe.

  • Hinzufügen eines Inhaltstyps, der die benutzerdefinierten Felder einschließt.

  • Hinzufügen einer Listendefinition auf Grundlage des Inhaltstyps.

  • Hinzufügen einer Listeninstanz und von Standarddaten für die Liste, die mit der Sitedefinition bereitgestellt wird.

  • Anpassen der Seite "default.aspx" der Website durch Hinzufügen eines visuellen Webparts.

  • Anpassen eines Benutzersteuerelements auf dem visuellen Webpart.

  • Hinzufügen eines benutzerdefiniertes Logobilds zur Projektmappe, das auf dem visuellen Webpart angezeigt wird.

Tipp

Ihr Computer zeigt möglicherweise für einige der Elemente der Visual Studio-Benutzeroberfläche in der folgenden Anleitung andere Namen oder Standorte an. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Visual Studio-Einstellungen.

Vorbereitungsmaßnahmen

Zum Durchführen dieser exemplarischen Vorgehensweise benötigen Sie die folgenden Komponenten:

Erstellen einer Websitedefinitionslösung

Erstellen Sie zunächst das Websitedefinitionsprojekt in Visual Studio.

So erstellen Sie ein Websitedefinitionsprojekt

  1. Zeigen Sie das Dialogfeld Neues Projekt an, indem Sie im Menü Datei auf Neu zeigen und dann auf Projekt klicken.

  2. Erweitern Sie unter Visual C# oder Visual Basic den Knoten SharePoint, und klicken Sie dann auf 2010.

  3. Wählen Sie im Bereich "Vorlagen" die Option Sitedefinition aus.

  4. Geben Sie im Feld Name den Namen "Testsitedef2" ein, und klicken Sie dann auf OK.

    Der Assistent zum Anpassen von SharePoint wird angezeigt.

  5. Geben Sie auf der Seite Site und Sicherheitsebene für Debugging angeben die URL für die SharePoint-Webserversite ein, an der Sie die Websitedefinition debuggen möchten, oder verwenden Sie den Standardspeicherort (http://Systemname/).

  6. Verwenden Sie im Abschnitt Wie lautet die Vertrauensebene für diese SharePoint-Lösung? den Standardwert Als Farmlösung bereitstellen.

    Alle Websitedefinitionsprojekte müssen als Farmlösungen bereitgestellt werden. Weitere Informationen über Sandkastenlösungen im Vergleich zu Farmlösungen finden Sie in Überlegungen zu Sandkastenlösungen.

  7. Klicken Sie auf Fertig stellen. Das Projekt wird im Projektmappen-Explorer angezeigt.

Hinzufügen eines Logobilds

Fügen Sie der Lösung anschließend ein Bild zur Verwendung als Unternehmenslogo in der Sitedefinition hinzu.

So fügen Sie ein Bild hinzu

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Zugeordneter SharePoint-Ordner "Bilder".

    Da dem SharePoint-Dateisystem der Ordner Bilder direkt zugeordnet ist, werden hinzugefügte Dateien für den SharePoint-Ordner "/images" bereitgestellt und können in SharePoint verwendet werden.

  2. Klicken Sie unter Bilder mit der rechten Maustaste auf den Ordner TestSiteDef2, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Vorhandenes Element. Wählen Sie eine Bilddatei aus, die als Logo verwendet werden soll, und klicken Sie dann auf Hinzufügen.

    Alternativ können Sie im Kontextmenü auf Neues Element klicken und ein neues Bild erstellen. Die Auswahl an Bildtypen ist jedoch begrenzt. In der Regel empfiehlt es sich, Bilder mit einem anderen Tool zu erstellen.

  3. Wiederholen Sie Schritt 2, wenn Sie der Projektmappe weitere Bilder hinzufügen möchten. Sie könnten z. B. ein anderes Bild hinzufügen, das als Platzhalter für das weiter unten in diesem Thema hinzuzufügende Bildsteuerelement fungieren kann.

Hinzufügen einer benutzerdefinierten Gestaltungsvorlage

Wenn die Sitedefinition eine benutzerdefinierte Gestaltungsvorlage verwenden soll, können Sie diese der Projektmappe hinzufügen.

So fügen Sie eine benutzerdefinierte Gestaltungsvorlage hinzu

  1. Erstellen Sie eine Gestaltungsvorlage. Weitere Informationen finden Sie unter ASP.NET-Masterseiten.

  2. Exportieren und importieren Sie die benutzerdefinierte Gestaltungsvorlage dann in Visual Studio, wie unter Exemplarische Vorgehensweise: Importieren einer benutzerdefinierten Gestaltungsvorlage und einer Websiteseite mit Bild beschrieben.

  3. Fügen Sie die Gestaltungsvorlage einem Modul hinzu. Klicken Sie dazu im Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Neues Element.

  4. Wählen Sie im Dialogfeld Neues Element hinzufügen in der Liste der SharePoint-Vorlagen Modul aus. Geben Sie dem Modul einen Namen.

  5. Löschen Sie im Modul die Standarddatei "Sample.txt".

  6. Fügen Sie dem Modul einen Ordner mit dem Namen _catalogs hinzu und anschließend einen weiteren darunter mit dem Namen masterpage.

    Dies entspricht dem Speicherort anderer Gestaltungsvorlagen in SharePoint.

  7. Fügen Sie die Gestaltungsvorlage unter dem Ordner masterpage hinzu. Wählen Sie hierfür den Modulknoten, und klicken Sie dann im Menü Projekt auf Neues Element hinzufügen. Suchen Sie die Gestaltungsvorlage, und wählen Sie sie aus. Gestaltungsvorlagendateien haben eine Dateinamenerweiterung ".master".

  8. Ändern Sie die Einstellung Bereitstellungskonfliktlösung der Gestaltungsvorlage in Automatisch.

  9. Doppelklicken Sie im Modul auf die Datei "Elements.xml", um sie im XML-Designer zu öffnen.

    Sie müssen die Datei "Elements.xml" aktualisieren, um auf die Gestaltungsvorlage zu verweisen.

  10. Ersetzen Sie das vorhandene Modulmarkup durch folgendes Markup:

    <?xml version="1.0" encoding="utf-8"?>
    <Elements xmlns="https://schemas.microsoft.com/sharepoint/">
        <Module Name="[Module Name]" 
                Url="_catalogs/masterpage">
            <File Path="[Module Name]\_catalogs\masterpage\[Master Page 
              Name].master" 
                  Url="[Master Page Name].master" 
                  Type="GhostableInLibrary" />
        </Module>
    </Elements>
    

    Ersetzen Sie die Platzhalterwerte durch die tatsächlichen Namen des Moduls und der Gestaltungsvorlage.

  11. Ändern Sie den Namen der Gestaltungsvorlage in der Datei "default.aspx". Wenn die Gestaltungsvorlage z. B. als "newmaster.master" bezeichnet wird, gehen Sie wie folgt vor:

    <%@ Page language="C#" MasterPageFile="~/_catalogs/masterpage/newmaster.master" Inherits="Microsoft.SharePoint.WebPartPages.WebPartPage,Microsoft.SharePoint,Version=14.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c"  %>
    
  12. Speichern Sie das Projekt.

Definieren von benutzerdefinierten Feldern

Definieren Sie benutzerdefinierte Felder, die später verwendet werden, um eine benutzerdefinierte Liste zu erstellen. Diese Felder enthalten weitere für den Code in der Sitedefinition erforderliche Daten.

So definieren Sie benutzerdefinierte Felder

  1. Klicken Sie mit der rechten Maustaste im Projektmappen-Explorer auf den Sitedefinitionsknoten, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Neues Element.

  2. Wählen Sie Leeres Element in der Liste der Vorlagen aus, und nennen Sie das Element "SiteColumns".

  3. Ersetzen Sie in der Datei "Elements.xml" das Markup durch das folgende Markup:

    <?xml version="1.0" encoding="utf-8"?>
    <Elements xmlns="https://schemas.microsoft.com/sharepoint/">  
      <Field ID="{587DE9D5-618C-42C4-A754-06EA36CF7496}" 
             Type="Text" 
             Name="Latitude" 
             DisplayName="Latitude" 
             Group="Coordinates"/>
      <Field ID="{5D1CFF2C-8032-4792-AB34-8E0A0520B478}" 
             Type="Text" 
             Name="Longitude" 
             DisplayName="Longitude" 
             Group="Coordinates"/>
      <Field ID="{8B7E3CC0-40B5-465E-81FE-D63B7471B7CE}" 
             Type="Text" 
             Name="Region" 
             DisplayName="Region" 
             Group="Coordinates"/>
      <Field ID="{8A152314-DB62-4EC7-96E7-E28F8A253B1D}" 
             Type="Text" 
             Name="StaffNumber" 
             DisplayName="StaffNumber" 
             Group="Coordinates"/>
    </Elements>
    

    Dieses Markup fügt SharePoint vier benutzerdefinierte Felder hinzu: Latitude (Breitengrad), Longitude (Längengrad), Region und StaffNumber (Mitarbeiternummer). Diese Felder werden verwendet, um Mitarbeiter und ihre Standorte zu identifizieren. Sie können weitere Felder hinzufügen, wenn Sie möchten. Verwenden Sie das Tool GUID erstellen im Menü Extras, um eine eindeutige GUID für jedes weitere Feld zu generieren.

    Tipp

    Wenn Sie diese Projektmappe erneut ausführen, kommentieren Sie die Felddefinitionen aus, um Fehler zu vermeiden.

  4. Speichern Sie das Projekt.

Hinzufügen eines Inhaltstyps

Erstellen Sie einen Inhaltstyp, der auf die neuen Felder verweist.

So fügen Sie einen Inhaltstyp hinzu

  1. Klicken Sie mit der rechten Maustaste im Projektmappen-Explorer auf den Sitedefinitionsknoten, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Neues Element.

  2. Wählen Sie in der Liste der Vorlagen Inhaltstyp aus, und nennen Sie den neuen Inhaltstyp "StaffListContentType".

  3. Wählen Sie auf der Seite Inhaltstypeinstellungen auswählen in der Liste für den Basiskontakttyp Kontakt aus.

  4. Ersetzen Sie das Markup in der Datei "Elements.xml" für den Inhaltstyp durch Folgendes:

    <?xml version="1.0" encoding="utf-8"?>
    <Elements xmlns="https://schemas.microsoft.com/sharepoint/">
      <!-- Parent ContentType: Contact (0x0106) -->
      <ContentType ID="0x010600a024d6b9cf214430a254b1272eaedc4f"
                   Name="TestSiteDef2 - StaffListContentType"
                   Group="Custom Content Types"
                   Description="My Content Type"
                   Inherits="TRUE"
                   Version="0">
        <FieldRefs>
          <FieldRef ID="{587DE9D5-618C-42C4-A754-06EA36CF7496}"
                    Name="Latitude"
                    DisplayName="Latitude"/>
          <FieldRef ID="{5D1CFF2C-8032-4792-AB34-8E0A0520B478}"
                    Name="Longitude"
                    DisplayName="Longitude"/>
          <FieldRef ID="{8B7E3CC0-40B5-465E-81FE-D63B7471B7CE}"
                    Name="Region"
                    DisplayName="Region"/>
          <FieldRef ID="{8A152314-DB62-4EC7-96E7-E28F8A253B1D}"
                    Name="StaffNumber"
                    DisplayName="StaffNumber"/>
        </FieldRefs>
      </ContentType>
    </Elements>
    
  5. Speichern Sie das Projekt.

Hinzufügen einer Listendefinition

Erstellen Sie eine Listendefinition, die auf den neuen Inhaltstyp verweist.

So fügen Sie eine Listendefinition hinzu

  1. Klicken Sie mit der rechten Maustaste im Projektmappen-Explorer auf den Sitedefinitionsknoten, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Neues Element.

  2. Wählen Sie in der Liste der Vorlagen Listendefinition von Inhaltstyp aus, und geben Sie für die Listendefinition den Namen "StaffListDefinition" ein.

  3. Verwenden Sie auf der Seite Listendefinitionseinstellungen auswählen die Standardwerte für den Anzeigenamen und den Basisinhaltstyp. Deaktivieren Sie das Kontrollkästchen Fügt eine Listeninstanz für diese Listendefinition hinzu., und klicken Sie dann auf Fertig stellen.

    Dadurch wird die Listendefinition als Grundlage für den neuen Inhaltstyp verwendet. Sie erstellen später eine Instanz der Liste in der Datei "onet.xml".

  4. Doppelklicken Sie auf "Schema.xml", um die Datei zu öffnen. Beachten Sie, dass bereits am Dateianfang auf die benutzerdefinierten Felder verwiesen wird.

Hinzufügen von Standardlistendaten zur Datei 'onet.xml'

Um eine Instanz der neuen Listendefinition und einige Standardmitarbeiterinformationen für die Mitarbeiterliste bereitzustellen, fügen Sie der Datei "onet.xml" der Sitedefinition nach der Bereitstellung der Sitedefinition Daten hinzu.

So fügen Sie der Datei "onet.xml" Listendaten hinzu

  1. Doppelklicken Sie auf die Datei "onet.xml", um sie zu öffnen.

  2. Ersetzen Sie das <Lists/>-Tag durch folgendes Markup:

    <Lists>
        <List Title="StaffList"
              FeatureId="fea29b33-8752-45d4-a5bd-6f7a54db7d49"
              Url="Lists/TestSiteDef2-StaffList"
              Description="" Type="10000">
              <Data>
                <Rows>
                  <Row>
                    <Field Name="FirstName">David</Field>
                    <Field Name="FullName">David Pelton</Field>
                    <Field Name="Region">Northwest</Field>
                    <Field Name="Longitude">-122.33</Field>
                    <Field Name="Latitude">47.60</Field>
                    <Field Name="StaffNumber">100200</Field>
                  </Row>
                  <Row>
                    <Field Name="FirstName">Joe</Field>
                    <Field Name="FullName">Joe Healy</Field>
                    <Field Name="Region">Southwest</Field>
                    <Field Name="Longitude">-115.13</Field>
                    <Field Name="Latitude">36.15</Field>
                    <Field Name="StaffNumber">100300</Field>
                  </Row>
                  <Row>
                    <Field Name="FirstName">Lisa</Field>
                    <Field Name="FullName">Lisa Andrews</Field>
                    <Field Name="Region">Northeast</Field>
                    <Field Name="Longitude">-73.98</Field>
                    <Field Name="Latitude">40.75</Field>
                    <Field Name="StaffNumber">100400</Field>
                  </Row>
                  <Row>
                    <Field Name="FirstName">Chris</Field>
                    <Field Name="FullName">Chris Ashton</Field>
                    <Field Name="Region">Southeast</Field>
                    <Field Name="Longitude">-84.38</Field>
                    <Field Name="Latitude">33.76</Field>
                    <Field Name="StaffNumber">100500</Field>
                  </Row>
                </Rows>
              </Data>
        </List>
    </Lists>
    
  3. Legen Sie den Bereich der Funktion auf die Websiteebene fest. Doppelklicken Sie hierzu auf die Funktionsdatei im Projektmappen-Explorer, um sie im Funktions-Designer zu öffnen. Legen Sie im Funktions-Designer den Bereich auf Site fest.

  4. Speichern Sie das Projekt.

Hinzufügen eines Verweises auf den Bing Maps-Dienst

Rufen Sie den Bing Maps-Bilddaten-Dienst auf, um eine Karte bereitzustellen, in der der Standort des ausgewählten Mitarbeiters angezeigt werden kann.

So fügen Sie der Projektmappe den Bing Maps-Bilddaten-Dienst hinzu

  1. Fügen Sie dem Projekt einen Dienstverweis hinzu. Klicken Sie dazu im Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten, und klicken Sie dann auf Dienstverweis hinzufügen.

  2. Geben Sie im Dialogfeld Dienstverweis hinzufügen im Feld Adresse die folgende URL ein:

    http://dev.virtualearth.net/webservices/v1/imageryservice/imageryservice.svc?wsdl
    
  3. Klicken Sie auf Weiter, geben Sie im Feld Namespace den Namen ImageryService ein, und klicken Sie dann auf OK.

  4. Löschen Sie die Datei "app.config" aus der Sitedefinition.

    Diese vom Dienst hinzugefügte Datei stellt notwendige Endpunkte und eine Bindung bereit. Sie funktioniert jedoch nicht ordnungsgemäß mit SharePoint-Lösungen, deshalb wird die Funktionalität später durch Code hinzugefügt.

  5. Für Bing Maps Web Services ist ein Bing Maps-Schlüssel erforderlich, um Anforderungen auszuführen. Sie erhalten einen Schlüssel, indem Sie sich beim Bing Maps Account Center in Ihrem Konto anmelden.

Erstellen eines visuelles Webparts mit Steuerelementen

Erstellen Sie dann ein visuelles Webpart mit Steuerelementen, das auf der Hauptseite der Sitedefinition angezeigt werden soll.

So erstellen Sie ein visuelles Webpart

  1. Klicken Sie mit der rechten Maustaste im Projektmappen-Explorer auf den Sitedefinitionsknoten, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Neues Element.

  2. Wählen Sie Visuelles Webpart in der Liste der Vorlagen aus, und verwenden Sie den Standardwert VisualWebPart1 für den Namen des Webparts.

  3. Fügen Sie unter dem vorhandenen Markup in der Datei "VisualWebPart1UserControl.ascx" Folgendes hinzu:

    <style type="text/css">
        .style4
        {
            height: 205px;
            width: 187px;
        }
        .style5
        {
            height: 396px;
            width: 187px;
        }
        .style7
        {
            height: 205px;
            width: 291px;
        }
        .style8
        {
            height: 396px;
            width: 291px;
        }
        </style>
    
    <table style="width: 100%;">
        <tr>
            <td align="center" class="style4" valign="middle">
    <asp:Image ID="Image1" runat="server" Height="200px" 
        ImageUrl="~/_layouts/images/TestSiteDef2/logo.jpg" Width="350px" />
            </td>
            <td class="style7">
    <asp:Label ID="Label1" runat="server" Font-Size="XX-Large" 
        Font-Underline="True" Text="Tailspin Toys"></asp:Label>
                <br />
                <br />
    <asp:Label ID="Label7" runat="server" Font-Size="X-Large" 
        Font-Underline="False" Text="Employee Locator"></asp:Label>
            </td>
        </tr>
        <tr>
            <td class="style5" valign="top">
                <br />
    <asp:Label ID="Label2" runat="server" Font-Size="Large" Text="Region:"></asp:Label>
                <br />
                <asp:DropDownList ID="DropDownList1" runat="server" Height="24px" 
            Width="352px" onselectedindexchanged="DropDownList1_SelectedIndexChanged" 
                    AutoPostBack="True">
                <asp:ListItem>Northeast</asp:ListItem>
                <asp:ListItem>Northwest</asp:ListItem>
                <asp:ListItem>Southeast</asp:ListItem>
                <asp:ListItem>Southwest</asp:ListItem>
            </asp:DropDownList>
                <br />
                <br />
        <asp:Label ID="Label6" runat="server" Font-Size="Large" Text="Staff:"></asp:Label>
                <br />
        <asp:ListBox ID="ListBox1" runat="server" Width="352px" 
            onselectedindexchanged="ListBox1_SelectedIndexChanged" AutoPostBack="True"></asp:ListBox>
                <br />
                <br />
    &nbsp;&nbsp;
                </td>
            <td class="style8">
                <br />
    <asp:Label ID="Label5" runat="server" Font-Size="Large" Text="Map Location:"></asp:Label>
                <br />
    <asp:Image ID="Image2" runat="server" Height="388px" 
        ImageUrl="" Width="465px" />
            </td>
        </tr>    
    </table>
    
    <br />
    

    Der Seite wird dadurch Folgendes hinzugefügt: ein Titel, ein Logobild, ein Dropdown-Listenfeld, das Regionen enthält, ein Listenfeld für Mitarbeiternamen und ein Bild-Steuerelement, das eine Karte anzeigt.

  4. Öffnen Sie die Datei "VisualWebPart1UserControl.ascx.cs", die sich unter "VisualWebPart1UserControl.ascx" befindet, und ersetzen Sie den Code durch folgenden Code:

    using System;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using Microsoft.SharePoint;
    using TestSiteDef2.ImageryService;
    using System.ServiceModel;
    using System.ServiceModel.Channels;
    using System.Text;
    
    namespace TestSiteDef2.SiteDefinition.VisualWebPart1
    {
        public partial class VisualWebPart1UserControl : UserControl
        {
            protected void Page_Load(object sender, EventArgs e)
            {
            }
    
            protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
            {
                string selectedRegion = DropDownList1.SelectedItem.Text;
    
                SPSite site = new SPSite(Context.Request.Url.AbsoluteUri);
                // Add the SharePoint server name below.
                string webName = 
                    Context.Request.Url.AbsoluteUri.Replace("https://localhost/", "");
                webName = webName.Replace("http://[SharePoint Server Name]/", "");
                webName = webName.Replace("/default.aspx", "");
    
                SPWeb web = site.AllWebs[webName];
                SPList list = web.Lists["StaffList"];
    
                ListBox1.Items.Clear();
                foreach (SPListItem item in list.Items)
                {
                    if (item["Region"].ToString() == selectedRegion)
                    {
                        // LinkTitle == LastName -> see schema.xml
                        ListBox1.Items.Add(item["StaffNumber"] + ": " + 
                            item["FullName"].ToString());
                    }
                }
            }
    
            protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
            {
                // Reference the site based on its URL.
                SPSite site = new SPSite(Context.Request.Url.AbsoluteUri);
    
                // Add the SharePoint server name below.
                string webName = 
                    Context.Request.Url.AbsoluteUri.Replace("https://localhost/", "");
                webName = webName.Replace("http://[SharePoint Server Name]/", "");
                webName = webName.Replace("/default.aspx", "");
    
                SPWeb web = site.AllWebs[webName];
    
                // Reference the new list "StaffList" (as defined in onet.xml).
                SPList list = web.Lists["StaffList"];
    
                // Get the string entered in the listbox, split it up.
                // String format: ("XXXXXX: First Last") 
                string fullName = ListBox1.SelectedItem.Text; 
                string[] splitStr = fullName.Split(':');
    
                string longitude = "";
                string latitude = "";
                // Iterate through list, get the latitude/longitude 
                // values for the selected employee's StaffNumber.
                foreach (SPListItem item in list.Items)
                {
                    if (splitStr[0] == item["StaffNumber"].ToString())
                    {
                        longitude = item["Longitude"].ToString();
                        latitude = item["Latitude"].ToString();
    
                        break;
                    }
                }
    
                // Fetch the Bing map based on the selected employee's 
                // latitude and longitude.
                ShowMap(longitude, latitude); 
            }
    
            public void ShowMap(string Longitude, string Latitude)
            {
                Image2.ImageUrl = GetMap(Latitude, Longitude, Latitude + "," 
                    + Longitude);
            }
    
            private string GetMap(string Latitude, string Longitude, string locationString)
            {
                // Set the address to the Bing Maps imagery service.
                EndpointAddress address = new 
                    EndpointAddress("http://dev.virtualearth.net/webservices/v1/imageryservice/imageryservice.svc");
    
                // Set up the binding, channel, and Bing Maps key.
                BasicHttpBinding binding = new BasicHttpBinding();
                binding.UseDefaultWebProxy = true;
                ChannelFactory<IImageryService> factory = 
                    new ChannelFactory<IImageryService>(binding, address);
                IImageryService channel = factory.CreateChannel(address);
                // Add your key below.
                string key = "[Bing Maps key]";
                MapUriRequest mapUriRequest = new MapUriRequest();
    
                // Set credentials using a valid Bing Maps key
                mapUriRequest.Credentials = new ImageryService.Credentials();
                mapUriRequest.Credentials.ApplicationId = key;
    
                // Set the location of the requested image.
                mapUriRequest.Center = new ImageryService.Location();
                string[] digits = locationString.Split(',');
                mapUriRequest.Center.Latitude = double.Parse(digits[0].Trim());
                mapUriRequest.Center.Longitude = double.Parse(digits[1].Trim());
    
                // Set the map style and zoom level.
                MapUriOptions mapUriOptions = new MapUriOptions();
                mapUriOptions.Style = MapStyle.AerialWithLabels;
                mapUriOptions.ZoomLevel = 17;
    
                // Set the size of the requested image in pixels.
                mapUriOptions.ImageSize = new ImageryService.SizeOfint();
                mapUriOptions.ImageSize.Height = 388;
                mapUriOptions.ImageSize.Width = 465;
                mapUriOptions.Style = MapStyle.AerialWithLabels;
    
                mapUriRequest.Options = mapUriOptions;
    
                // Add a pushpin to the current location.
                ImageryService.Pushpin[] MapPins = new ImageryService.Pushpin[1];
                MapPins[0] = new Pushpin();
                MapPins[0].IconStyle = "34";
                MapPins[0].Location = new Location();
                MapPins[0].Location.Latitude = Convert.ToDouble(Latitude);
                MapPins[0].Location.Longitude = Convert.ToDouble(Longitude);
                mapUriRequest.Pushpins = MapPins;
    
                // Open the channel and retrieve the map.
                ((IChannel)channel).Open();
                MapUriResponse mapUriResponse = channel.GetMapUri(mapUriRequest);
                ((IChannel)channel).Close();
                return mapUriResponse.Uri;
    
            }
        }
    }
    

Hinzufügen des visuellen Webparts zur Seite 'default.aspx'

Fügen Sie dann der Seite "default.aspx" der Sitedefinition das visuelle Webpart hinzu.

So fügen Sie der Seite "default.aspx" ein visuelles Webpart hinzu

  1. Öffnen Sie die Seite "default.aspx", und fügen Sie unter dem WebPartPages-Tag das folgende Markup hinzu:

    <%@ Register Tagprefix="MyWebPartControls" Namespace="TestSiteDef2.SiteDefinition.VisualWebPart1" Assembly="$SharePoint.Project.AssemblyFullName$" %>
    

    Diese Zeile ordnet dem Webpart und seinem Code den Namen MyWebPartControls zu. Der Namespace-Parameter entspricht dem in der Codedatei "VisualWebPart1Usercontrol.ascx" verwendeten Namespace.

  2. Ersetzen Sie nach dem </asp:Content>-Element den gesamten Abschnitt ContentPlaceHolderId="PlaceHolderMain" und dessen Inhalt durch folgendes Markup:

    <asp:Content ID="Content1" ContentPlaceHolderId="PlaceHolderMain" runat="server">
        <h1>
            Welcome to Tailspin Toys
        </h1>  
        <MyWebPartControls:VisualWebPart1 runat="server" />
    </asp:Content>
    

    In diesem Markup wird ein Verweis auf das zuvor erstellte visuelle Webpart erstellt.

Ausführen und Bereitstellen der Sitedefinitionslösung

Führen Sie dann das Projekt aus, und stellen Sie es in SharePoint bereit.

So führen Sie die Websitedefinition aus und stellen sie bereit

  • Drücken Sie F5. Visual Studio kompiliert den Code, fügt die Funktionen des Projekts hinzu, verpackt alle Dateien in eine WSP-Datei und stellt die WSP-Datei auf dem SharePoint-Server bereit. SharePoint installiert dann die Dateien, aktiviert die Funktionen und zeigt die Seite Neue SharePoint-Website an.

Erstellen einer Website auf Grundlage der Sitedefinition

Erstellen Sie eine neue Website mithilfe der neuen Sitedefinition.

So erstellen Sie eine Website mithilfe der Websitedefinition

  1. Auf der SharePoint-Website wird die Seite Neue SharePoint-Website angezeigt.

  2. Geben Sie im Abschnitt Titel und Beschreibung für den Titel und die Beschreibung der Website "My New Site" ein.

  3. Geben Sie im Abschnitt Websiteadresse im Feld URL-Name den Namen "mynewsite" ein.

  4. Klicken Sie im Abschnitt Vorlage auf die Registerkarte SharePoint-Anpassungen, und wählen Sie dann in der Liste Vorlage auswählen den Eintrag TestSiteDef2 aus.

  5. Übernehmen Sie die Standardwerte für die anderen Einstellungen, und klicken Sie dann auf Erstellen.

    Die neue Website wird angezeigt.

Testen der neuen Website

Testen Sie danach die neue Website, um sicherzustellen, dass sie ordnungsgemäß funktioniert.

So testen Sie die neue Website

  1. Klicken Sie im Feld unter Region auf einen der Standorte.

    Ein Mitarbeitername für diese Region wird in der Liste Mitarbeiter (Staff) angezeigt.

  2. Klicken Sie in der Liste Mitarbeiter (Staff) auf den Namen des Mitarbeiters.

    Ein Karte mit dem Aufenthaltsort des Mitarbeiters wird im Bild-Steuerelement angezeigt.

    Tipp

    Wenn der Bing Maps-Dienst nicht verfügbar ist, wird ein "EndPointNotFoundException"-Fehler ausgegeben. Wenn dies geschieht, versuchen Sie es später erneut.

Siehe auch

Aufgaben

Exemplarische Vorgehensweise: Erstellen eines einfachen Projekts für eine Websitedefinition

Gewusst wie: Erstellen eines Ereignisempfängers

Weitere Ressourcen

Entwickeln von SharePoint-Lösungen