Cómo: Buscar datos de mapas de sitio

Actualización: noviembre 2007

Puede adaptar las propiedades siguientes en un mapa del sitio:

Estas propiedades se adaptan utilizando una expresión explícita o implícita como valor de la propiedad. Para obtener más información sobre las expresiones, vea Información general sobre expresiones ASP.NET. Para obtener información sobre los archivos de recursos, vea Recursos de aplicaciones de ASP.NET.

Para adaptar las propiedades Title o Description de un nodo del mapa del sitio utilizando una expresión explícita

  1. En el mapa del sitio, establezca la propiedad EnableLocalization en true. Por ejemplo, en un archivo Web.sitemap, cambie el nodo <siteMap> de modo que se parezca al código siguiente:

    <siteMap enableLocalization="true">
    
  2. En el mapa del sitio, cambie el valor de la propiedad que desea adaptar a una cadena de recursos, como la línea de código siguiente, que distingue entre mayúsculas y minúsculas:

    $resources:ClassName,KeyName,DefaultValue
    

    Por ejemplo, en un archivo Web.sitemap, el nodo del mapa del sitio se podría parecer el código del ejemplo siguiente.

    <siteMapNode 
      url="~/Home.aspx" 
      title="$resources:SiteMapLocalizations,HomePageTitle"
    description="$resources:SiteMapLocalizations,HomePageDescription,Default description"
      myCustomAttribute="$resources: CustomLocalizations,MyCustomAttribute"
    />
    

    El título y la descripción adaptados se obtienen de un archivo denominado SiteMapLocalizations.resx mediante las claves de recursos HomePageTitle y HomePageDescription. El atributo personalizado adaptado se obtiene de un archivo distinto denominado CustomLocalizations.resx. Para obtener más información sobre las cadenas de recursos, vea Información general sobre expresiones ASP.NET.

  3. Cree los archivos .resx en una carpeta denominada App_GlobalResources en la raíz de su aplicación. Dentro del archivo .rex, los valores de las propiedades se indizan por el valor del nombre de la clave. En el ejemplo anterior, el archivo SiteMapLocalizations.resx podría parecerse a:

    <?xml version="1.0" encoding="utf-8"?>
    <root>
      <xsd:schema id="root"  xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
        <xsd:element name="root" msdata:IsDataSet="true">
          <xsd:complexType>
            <xsd:choice maxOccurs="unbounded">
              <xsd:element name="metadata">
                <xsd:complexType>
                  <xsd:sequence>
                    <xsd:element name="value" type="xsd:string" minOccurs="0" />
                  </xsd:sequence>
                  <xsd:attribute name="name" type="xsd:string" />
                  <xsd:attribute name="type" type="xsd:string" />
                  <xsd:attribute name="mimetype" type="xsd:string" />
                </xsd:complexType>
              </xsd:element>
              <xsd:element name="assembly">
                <xsd:complexType>
                  <xsd:attribute name="alias" type="xsd:string" />
                  <xsd:attribute name="name" type="xsd:string" />
                </xsd:complexType>
              </xsd:element>
              <xsd:element name="data">
                <xsd:complexType>
                  <xsd:sequence>
                    <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                    <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
                  </xsd:sequence>
                  <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
                  <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
                  <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
                </xsd:complexType>
              </xsd:element>
              <xsd:element name="resheader">
                <xsd:complexType>
                  <xsd:sequence>
                    <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                  </xsd:sequence>
                  <xsd:attribute name="name" type="xsd:string" use="required" />
                </xsd:complexType>
              </xsd:element>
            </xsd:choice>
          </xsd:complexType>
        </xsd:element>
      </xsd:schema>
      <resheader name="resmimetype">
        <value>text/microsoft-resx</value>
      </resheader>
      <resheader name="version">
        <value>2.0</value>
      </resheader>
      <resheader name="reader">
        <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
      </resheader>
      <resheader name="writer">
        <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
      </resheader>
      <data name="HomePageTitle">
        <value xml:space="preserve">Home Page</value>
      </data>
      <data name="HomePageDescription">
        <value xml:space="preserve">Home page of site</value>
      </data>
    </root>
    
  4. Si necesita adaptar las cadenas para varios lenguajes, puede crear archivos .resx adicionales con información de la configuración regional incluida en el nombre del archivo. Por ejemplo, la versión en francés de su archivo de recursos se denominaría SiteMapLocalizations.fr.resx.

Para adaptar las propiedades Title o Description de un nodo del mapa del sitio utilizando una expresión implícita

  1. En el mapa del sitio, establezca la propiedad EnableLocalization en true. Por ejemplo, en un archivo Web.sitemap, cambie el nodo <siteMap> de modo que se parezca al código siguiente:

    <siteMap enableLocalization="true">
    
  2. En el mapa del sitio, agregue un atributo denominado resourceKey al nodo del mapa del sitio que desea adaptar utilizando la siguiente línea de código, que distingue entre mayúsculas y minúsculas:

    resourceKey="HomePage"
    

    Por ejemplo, en un archivo Web.sitemap, el nodo <siteMap> podría parecerse al código siguiente:

    <siteMapNode 
      url="~/Home.aspx" 
      resourceKey="HomePage"
      title = "Default Title"   
      description = "Default Description" 
     />
    

    El título y la descripción adaptados se obtienen de un archivo denominado Web.sitemap.resx mediante las claves de recursos HomePage.title y HomePage.description.

  3. Cree el archivo .resx en una carpeta denominada App_GlobalResources en la raíz de su aplicación. Dentro del archivo .resx, los valores de las propiedades se indizan por nombre. En el ejemplo anterior, el archivo Web.sitemap.resx se podría parecer a lo siguiente.

    Nota:

    Los nombres de clave en los archivos de recursos globales no pueden incluir puntos (.). Sin embargo, los puntos son necesarios en los recursos globales a los que se hace referencia en archivos de mapa del sitio cuando se usan expresiones implícitas. Esto se debe a la sintaxis de resourceKey. En algunos entornos de edición, como Visual Web Developer, podría producirse un error en tiempo de diseño si se utiliza un punto en el nombre de la clave. Sin embargo, esto no tiene por qué afectar a la posibilidad de editar o guardar el archivo y podría pasarse por alto.

    <?xml version="1.0" encoding="utf-8"?>
    <root>
      <xsd:schema id="root"  xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
        <xsd:element name="root" msdata:IsDataSet="true">
          <xsd:complexType>
            <xsd:choice maxOccurs="unbounded">
              <xsd:element name="metadata">
                <xsd:complexType>
                  <xsd:sequence>
                    <xsd:element name="value" type="xsd:string" minOccurs="0" />
                  </xsd:sequence>
                  <xsd:attribute name="name" type="xsd:string" />
                  <xsd:attribute name="type" type="xsd:string" />
                  <xsd:attribute name="mimetype" type="xsd:string" />
                </xsd:complexType>
              </xsd:element>
              <xsd:element name="assembly">
                <xsd:complexType>
                  <xsd:attribute name="alias" type="xsd:string" />
                  <xsd:attribute name="name" type="xsd:string" />
                </xsd:complexType>
              </xsd:element>
              <xsd:element name="data">
                <xsd:complexType>
                  <xsd:sequence>
                    <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                    <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
                  </xsd:sequence>
                  <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
                  <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
                  <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
                </xsd:complexType>
              </xsd:element>
              <xsd:element name="resheader">
                <xsd:complexType>
                  <xsd:sequence>
                    <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                  </xsd:sequence>
                  <xsd:attribute name="name" type="xsd:string" use="required" />
                </xsd:complexType>
              </xsd:element>
            </xsd:choice>
          </xsd:complexType>
        </xsd:element>
      </xsd:schema>
      <resheader name="resmimetype">
        <value>text/microsoft-resx</value>
      </resheader>
      <resheader name="version">
        <value>2.0</value>
      </resheader>
      <resheader name="reader">
        <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
      </resheader>
      <resheader name="writer">
        <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
      </resheader>
      <data name="HomePage.description">
        <value xml:space="preserve">Home Page Description</value>
      </data>
      <data name="HomePage.Text">
        <value xml:space="preserve">Home Page Text from Resource File</value>
      </data>
      <data name="HomePage.title">
        <value xml:space="preserve">Home Page Title from Resource File</value>
      </data>
      <assembly alias="mscorlib" name="mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      <data name="LabelResource1.Visible" type="System.Boolean, mscorlib">
        <value>True</value>
      </data>
    </root>
    
  4. Si necesita adaptar las cadenas para varios lenguajes, puede crear archivos .resx adicionales con información de la configuración regional incluida en el nombre del archivo. Por ejemplo, la versión en francés del archivo de recursos se denominaría Web.sitemap.fr.resx.

Adaptar la propiedad URL en un mapa del sitio

La propiedad Url no se puede adaptar en un mapa del sitio de la misma manera que las propiedades Title y Description.

Para definir estructuras de exploración diferentes en función de la configuración regional de un usuario

  1. Defina un archivo de mapa de sitio diferente para cada configuración regional.

  2. Agregue cada mapa del sitio al archivo Web.config. Para obtener más información, vea Cómo: Configurar varios mapas de sitio y proveedores de mapas de sitio.

  3. Mediante programación cambie en tiempo de ejecución al Provider adecuado. Para ello, establezca la propiedad SiteMapProvider del objeto SiteMapDataSource o establezca la propiedad SiteMapProvider del objeto SiteMapPath en el nombre del proveedor. Para obtener más información, vea Cómo: Modificar los nodos de mapa de sitio en memoria mediante programación.

Programación eficaz

No se pueden usar expresiones explícitas e implícitas en un mismo archivo de mapa del sitio.

Vea también

Tareas

Cómo: Configurar varios mapas de sitio y proveedores de mapas de sitio

Cómo: Modificar los nodos de mapa de sitio en memoria mediante programación

Conceptos

Mapas de sitio de ASP.NET

Recursos de aplicaciones de ASP.NET

Información general sobre expresiones ASP.NET

Proteger la exploración del sitio de ASP.NET

Proteger el acceso a datos

Referencia

Title

Description

Attributes

Otros recursos

Seguridad de aplicaciones ASP.NET en entornos alojados en host