Compartilhar via


SPWeb.GetAvailableWebTemplates Method (UInt32, Boolean)

Gets the site templates that are available for creating subsites beneath the website, based on the specified locale identifier (ID) and whether to include language-neutral site templates.

Namespace:  Microsoft.SharePoint
Assembly:  Microsoft.SharePoint (in Microsoft.SharePoint.dll)
Available in Sandboxed Solutions: Yes
Available in SharePoint Online

Syntax

'Declaration
<ClientCallableExceptionConstraintAttribute(FixedId := "System.UnauthorizedAccessException$0",  _
    Condition := "In case of RootWeb.CurrentUser is null", ErrorType := GetType(UnauthorizedAccessException))> _
<ClientCallableAttribute> _
Public Function GetAvailableWebTemplates ( _
    lcid As UInteger, _
    doIncludeCrossLanguage As Boolean _
) As SPWebTemplateCollection
'Usage
Dim instance As SPWeb
Dim lcid As UInteger
Dim doIncludeCrossLanguage As Boolean
Dim returnValue As SPWebTemplateCollection

returnValue = instance.GetAvailableWebTemplates(lcid, _
    doIncludeCrossLanguage)
[ClientCallableExceptionConstraintAttribute(FixedId = "System.UnauthorizedAccessException$0", 
    Condition = "In case of RootWeb.CurrentUser is null", ErrorType = typeof(UnauthorizedAccessException))]
[ClientCallableAttribute]
public SPWebTemplateCollection GetAvailableWebTemplates(
    uint lcid,
    bool doIncludeCrossLanguage
)

Parameters

  • lcid
    Type: System.UInt32

    The locale ID of the web templates to be retrieved.

  • doIncludeCrossLanguage
    Type: System.Boolean

    true to include language-neutral site templates; otherwise, false.

Return Value

Type: Microsoft.SharePoint.SPWebTemplateCollection
The web templates.

Remarks

In some instances, the specified custom site definition is not found because the custom site definition is not yet in the cache. This occurs when the following steps are made to create a new site collection based on the custom site definition:

  1. Add a solution that consists of site templates and features.

  2. Create a web application.

  3. Deploy the solution, including deployment of the application DLLs to the bin directory of the newly created web application.

  4. Create a new site collection that is based on the custom site definition that was deployed to the web application.

When this sequence occurs, steps 1, 2, and 3 work as expected, but when step 4 is performed, the application does not find the site definition for the newly deployed site. The issue arises because site templates are cached when a new web application is created.

There are four ways to work around this issue.

  1. Perform the first three steps, as described above, run the application, and then perform step 4. This restarts the process and allows the Web application to locate the deployed custom site definition.

  2. Create a console application that creates a site collection using the template for the custom site definition. Then, call the sequence of four steps that are listed above; however, when you come to step 4 (create site collection), load the console executable program that you created in a different process and allow it to complete step 4.

  3. Use the SharePoint Management Shell in the code itself. The web application is able to locate the newly deployed custom site definition.

  4. Add and deploy the solution manually by using the SharePoint UI, or by using the SharePoint Management Shell.

See Also

Reference

SPWeb Class

SPWeb Members

GetAvailableWebTemplates Overload

Microsoft.SharePoint Namespace