Compartir a través de


Sistema de representación de páginas móviles

Última modificación: lunes, 28 de febrero de 2011

Hace referencia a: SharePoint Foundation 2010

En este tema se describe cómo Microsoft SharePoint Foundation usa los controles RenderingTemplate y los controles del selector de plantillas para representar las páginas a las que se puede acceder desde los dispositivos móviles.

Controles de la página

Las páginas móviles se representan con controles RenderingTemplate, pero no se llama directamente a estos controles desde la página. En su lugar, un control SPMobileComponent o tipo de control que se deriva de SPMobileComponent se declara en la página. La propiedad TemplateName del control especifica el identificador de una plantilla RenderingTemplate. La plantilla de representación se declara en un archivo .ascx que se encuentra en %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\CONTROLTEMPLATES. Si un objeto de una clase derivada de SPMobileComponent se declara en la página, el valor de su propiedad TemplateName se determina internamente según la definición de sitio actual, el tipo de página actual y el área de la página (encabezado, contenido o pie de página) donde se declara el control. Si se declara un objeto SPMobileComponent real, la propiedad TemplateName se especifica en la declaración.

Los controles RenderingTemplate que se incluyen con SharePoint Foundation se declaran en MobileDefaultTemplates.ascx y GbwMobileDefaultTemplates.ascx. Las plantillas RenderingTemplate personalizadas se declaran en los archivos .ascx personalizados en la misma carpeta.

A continuación, se muestra el marcado principal de la página móvil de lista de listas, mbllists.aspx. Tenga en cuenta que en algunos lugares, como el área de encabezado de la página en dispositivos que admiten estilos de hojas de estilos en cascada (CSS), se declara un elemento SPMobileComponent y su propiedad TemplateName se establece explícitamente. Pero en otros lugares, como el encabezado de la página en dispositivos que no admiten CSS, se declara un objeto de la clase derivada de SPMobileComponent. En este caso, la clase es SPMobilePageTitle. En esta página, se llama a una plantilla de representación con el identificador MobileHomePageTitle.

Nota

El tipo de página móvil "Página principal" incluye páginas que en realidad no son páginas principales de un sitio. El tipo incluye páginas que no se ajustan claramente en otras categorías, como una página de vista de lista o página de formulario. Por ejemplo, la página móvil "lista de listas", mbllist.aspx, es de tipo HomePage.

<SPMobile:SPMobileForm RunAt="Server" PageType="HomePage" Paginate="true">
  <DeviceSpecific>
    <Choice Filter="supportsCss">
      <HeaderTemplate>
        <SPMobile:SPMobileComponent RunAt="Server"Templatename="MobilePageTitleWithCss" Weightless="true" />
      </HeaderTemplate>
      <FooterTemplate>
        <SPMobile:SPMobileComponent RunAt="Server" 
          Templatename="MobilePageNavigationWithCss" Weightless="true" />
      </FooterTemplate>
    </Choice>
    <Choice>
      <HeaderTemplate>
        <SPMobile:SPMobileControlContainer RunAt="Server" Weightless="true">
          <SPMobile:SPMobilePageTitle RunAt="Server" />
          <SPMobile:SPMobileComponent RunAt="Server" 
            TemplateName="MobileDefaultSeparator" />
        </SPMobile:SPMobileControlContainer>
      </HeaderTemplate>
      <FooterTemplate>
        <SPMobile:SPMobileControlContainer RunAt="Server" Weightless="true">
          <SPMobile:SPMobileComponent RunAt="Server" 
            Templatename="MobilePaginateNavigation" />
          <SPMobile:SPMobileComponent RunAt="Server" 
            TemplateName="MobileDefaultSeparator" />
          <SPMobile:SPMobilePageNavigation RunAt="Server" />
        </SPMobile:SPMobileControlContainer>
      </FooterTemplate>
    </Choice>
  </DeviceSpecific>
  <SPMobile:SPMobilePageContents RunAt="Server" />
</SPMobile:SPMobileForm>

Dentro del archivo ASCX

Cada plantilla RenderingTemplate llamada por los controles en la página tiene un elemento Template. El contenido del elemento Template generalmente coincide con uno de los siguientes modelos:

Llamadas directas de los controles web de ASP.NET

En el caso más simple, los controles web de Microsoft ASP.NET y los controles web de SharePoint Foundation que se van a insertar en la página móvil se llaman directamente en el elemento Template. Por ejemplo, MobileDefaultSeparator RenderingTemplate se llama desde las áreas de encabezado y pie de página de varias páginas móviles de SharePoint Foundation. Se define en MobileDefaultTemplates.ascx con el siguiente formato.

<SharePoint:RenderingTemplate RunAt="Server" id="MobileDefaultSeparator">
  <Template>
    <mobile:Panel RunAt="Server" Alignment="Center" EnableViewState="False">
      <mobile:DeviceSpecific RunAt="Server">
        <Choice Filter="IsMicrosoftMobileExplorer">
          <ContentTemplate>
            <hr width="100%" size="1">
          </ContentTemplate>
        </Choice>
        <Choice Filter="IsHtml32">
          <ContentTemplate>
            <hr width="100%" size="1" color="#D8D8D8">
          </ContentTemplate>
        </Choice>
        <Choice Filter="IsChtml10">
          <ContentTemplate>
            <hr width="100%" size="1">
          </ContentTemplate>
        </Choice>
        <Choice Filter="IsXhtmlMp">
          <ContentTemplate>
            <hr width="100%" size="1" style="color:#D8D8D8" />
          </ContentTemplate>
        </Choice>
        <Choice>
          <ContentTemplate>
            <mobile:LiteralText RunAt="Server" Text="-----" BreakAfter="true" />
          </ContentTemplate>
        </Choice>
      </mobile:DeviceSpecific>
    </mobile:Panel>
  </Template>
</SharePoint:RenderingTemplate>

Tenga en cuenta que el marcado declara un control ASP.NET Panel y le da un estilo según el lenguaje de marcado usado por el explorador del dispositivo móvil. Si el explorador no coincide con ningún tipo específico, la representación predeterminada es crear un separador con cinco guiones en un control LiteralText.

El siguiente código muestra la declaración de RenderingTemplate. Tenga en cuenta que llama a un objeto SPMobileLabel.

<SharePoint:RenderingTemplate RunAt="Server" id="MobileFormFieldSeparator">
  <Template>
    <SPMobile:SPMobileLabel RunAt="Server" Text="" BreakAfter="true" />
  </Template>
</SharePoint:RenderingTemplate>

Llamadas de un objeto SPMobileComponent

Como se observó previamente en la sección Controles de la página, los controles SPMobileComponent y los controles que derivan de SPMobileComponent se usan en una página móvil de SharePoint Foundation para llamar a las plantillas de representación. Por lo tanto, no resulta sorprendente que el elemento Template de una RenderingTemplate a veces incluya una llamada a uno de esos objetos. Esto sucede cuando una parte del contenido que la RenderingTemplate necesita representar exactamente duplica lo que se representa (indirectamente) mediante uno de estos objetos SPMobileComponent. Por ejemplo, se define MobilePageNavigationWithCss RenderingTemplate, en MobileDefaultTemplates.ascx, parcialmente con una llamada a la clase derivada de SPMobileComponentSPMobilePageNavigation y parcialmente, también, con una llamada al objeto SPMobileComponent cuya propiedad TemplateName se establece en MobilePaginateNavigation. El siguiente código muestra la declaración.

<SharePoint:RenderingTemplate RunAt="Server" 
  id="MobilePageNavigationWithCss">
  <Template>
    <SPMobile:SPMobileComponent RunAt="Server" 
      Templatename="MobilePaginateNavigation" />
    <SPMobile:SPMobileNoBreakSpace RunAt="Server" />
    <SPMobile:SPMobilePaddedPanel RunAt="Server" BackColor="#F6F6F6">
      <SPMobile:SPMobilePageNavigation RunAt="Server" />
    </SPMobile:SPMobilePaddedPanel>
  </Template>
</SharePoint:RenderingTemplate>

Llamadas de un objeto Selector de plantilla

Algunas veces el contenido del elemento Template es un objeto de una clase que deriva de SPMobileTemplateSelector. Existen nueve de estas clases:

Como sugiere el nombre de la clase de la que derivan, estos controles seleccionan otro control RenderingTemplate para representar realmente una parte de la página. Por ejemplo, el control MobileHomePageTitle RenderingTemplate que se menciona en la sección Controles de la página tiene SPMobileWebTitle como el valor de su elemento Template. SPMobileWebTitle llama a RenderingTemplate que representará el área de encabezado (título) de una página principal móvil. A continuación, se presenta la declaración de la plantilla de representación MobileHomePageTitle en MobileDefaultTemplates.ascx.

<SharePoint:RenderingTemplate RunAt="Server" id="MobileHomePageTitle">
  <Template>
    <SPMobile:SPMobileWebTitle RunAt="Server" />
  </Template>
</SharePoint:RenderingTemplate>

Cada objeto SPMobileTemplateSelector selecciona una plantilla RenderingTemplate mediante la creación de un identificador segmentado. El tiempo de ejecución busca, en los archivos .ascx en %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\CONTROLTEMPLATES, una RenderingTemplate con un identificador coincidente. Para obtener más información sobre identificadores segmentados para plantillas RenderingTemplate, consulte Identificadores segmentados de plantilla de representación más adelante. Para obtener más información sobre cómo se crean los identificadores, consulte los temas de referencia para las nueve clases enumeradas arriba y las secciones Representación de secciones en una página principal móvil y Representación de secciones en la vista de lista y en las páginas de formulario más adelante en este tema.

Llamadas mixtas

El elemento Template de una plantilla RenderingTemplate también puede contener llamadas a una mezcla de diversos tipos de controles:

Cualquier cadena de llamadas que usen objetos SPMobileTemplateSelector, objetos derivados de SPMobileComponent y objetos SPMobileComponent con un valor TemplateName explícito deben resolver en última instancia llamadas de controles que el analizador de páginas puede representar en el lenguaje de descripción de páginas del dispositivo móvil, como XHTML.

Identificadores segmentados de plantilla de representación

Muchas de las plantillas RenderingTemplate en MobileDefaultTemplates.ascx y GbwMobileDefaultTemplates.ascx tienen identificadores segmentados. Se pueden dividir en las siguientes categorías:

  • Plantillas de representación de variables de tipo de sitio

  • Plantillas de representación de variables de tipo de lista

  • Plantillas de representación de variables de tipo de campo

  • Plantillas de representación de elementos de lista de vista simple

  • Plantillas de "representación" de redireccionamiento

  • Plantillas de representación de la lista de entradas de blog

Plantillas de representación de variables de tipo de sitio

Las plantillas RenderingTemplate cuyo comportamiento de representación varía según la definición de sitio tienen identificadores segmentados con el siguiente formato:

usoDePáginaPrevisto_IDTipoDeSitio_tipoDePágina_áreaDePágina

Los valores posibles para áreaDePágina son Title (el área de encabezado de una página móvil), Navigation (el área de pie de página) y Contents.

IDTipoDeSitio es el nombre o el número de identificador de la definición de sitio del sitio web actual. Para las definiciones de sitio que se incluyen con SharePoint Foundation, IDTipoDeSitio puede ser STS, SGS o BLOG.

Nota

El acceso desde dispositivos móviles no es compatible con los sitios MPS, CENTRALADMIN, TENANTADMIN y WIKI heredados.

Para las definiciones de sitios personalizadas, IDTipoDeSitio es el número de identificador (no el nombre) de la definición del sitio. (El identificador de una definición de sitio se establece con el atributo ID de un elemento Template en un archivo WebTemp.xml. Para obtener más información acerca del atributo ID de una definición de sitio, vea WebTemp.xml.)

Tanto tipoDePágina como usoDePáginaPrevisto se refieren a tipos de páginas móviles, pero clasifican páginas móviles en diferentes ejes. tipoDePágina se refiere al propósito funcional de la página desde el punto de vista de un usuario final, como página principal, página de vista de lista o formulario de edición. Los valores posibles son los valores de la enumeración SPMobilePageType. usoDePáginaPrevisto distingue una página móvil según la página no móvil para la que tiene que corresponder; es decir, el tipo destinado de página de destino. Los valores posibles son los siguientes:

  • WebPartMobile: plantillas destinadas a usarse en versiones móviles de resumen de páginas de elementos web no móviles.

  • WebPartMobileDetail: plantillas destinadas a usarse en la versión móvil detallada de página de elementos web no móvil.

  • Moblog: plantillas destinadas a usarse en una página de sitio de blog móvil.

  • Mobile: todas las demás páginas móviles.

Los siguientes son ejemplos:

  • Mobile_STS_HomePage_Title

  • WebPartMobile_SGS_HomePage_Contents

Plantillas de representación de variables de tipo de lista

Las plantillas RenderingTemplate cuyo comportamiento de representación varía según la definición de lista tienen identificadores segmentados que tienen nombres con el siguiente formato:

usoDeListaPrevisto_IDTipoDeLista_tipoDePágina_áreaDePágina

tipoDePágina y áreaDePágina tienen los mismos significados que se describen en la subsección anterior. IDTipoDeLista es el número del identificador del tipo de la lista actual (como 105) o uno de los valores de la enumeración SPListTemplateType (como Contacts). Si la lista se especifica como parte del tipo de sitio en el archivo Onet.xml de la definición de sitio, IDTipoDeLista será el valor del atributo Type del elemento List en Onet.xml, que se encuentra en el siguiente directorio: %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\SiteTemplates\Site_Type\xml. Si la lista se agregó al sitio en la interfaz de usuario, IDTipoDeLista será el identificador del tipo de lista que se usó como base del tipo de lista nueva.

usoDeListaPrevisto identifica el tipo especial de lista, si hay alguno, que la plantilla está destinada a representar. Los valores posibles son los siguientes:

  • Mobile: tipos de lista ordinarios.

  • MobileFolder: plantillas destinadas a representar los elementos en una subcarpeta de una lista.

  • MobileDailyView: plantillas destinadas a representar la lista diaria de eventos del calendario de un sitio de grupo de trabajo.

Los siguientes son ejemplos:

  • Mobile_Events_NewForm_Navigation

  • Mobile_425_EditForm_Contents

Plantillas de representación de variables de tipo de campo

Las plantillas de representación de campo cuyo comportamiento de representación varía en función del tipo de campo tienen identificadores segmentados con el siguiente formato:

MobileCustomListField_IDTipoDeLista_tipoDeCampo_campo

IDTipoDeLista tiene el mismo significado que se explicó en la subsección anterior. tipoDeCampo es el tipo de datos del campo. Puede ser cualquiera de los valores de la enumeración SPFieldType; por ejemplo, Text o Number. También puede ser un tipo de campo personalizado como lo define el elemento <Field Name="TypeName"> en el archivo fldtypes*.xml que define el tipo de campo personalizado. (Para obtener más información acerca de los tipos de campo personalizados, vea Procedimiento para crear una definición de tipo de campo personalizado.) Campo es el nombre interno del campo, como WorkPhone. Si el campo se especifica como parte de la lista en el archivo Schema.xml para la definición de lista, el nombre interno es el valor del atributo Name del elemento Field en schema.xml, que se encuentra en el siguiente directorio: %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\FEATURES\Carpeta_Característica. Si el campo se agregó a la lista en la interfaz de usuario (es decir, en la página Crear columna, Campo será el valor de la propiedad SPField.InternalName y solo se podrá encontrar mediante el modelo de objetos.

Nota

Campo es el nombre interno del campo (columna) y no coincide necesariamente con el nombre para mostrar del campo. En el caso de los campos creados por los usuarios en la interfaz de usuario, el nombre interno lo genera el sistema a partir del nombre para mostrar elegido por el usuario. Si el usuario incluyó espacios o signos de puntuación en el nombre para mostrar, el nombre interno reemplazará estos caracteres con el número Unicode del carácter entre corchetes por caracteres subrayados. Por ejemplo, si un usuario asigna a un campo el nombre de "Muy pronto", el nombre interno será "Muy_x0020_pronto".

Los siguientes son ejemplos:

  • MobileCustomListField_Posts_DateTime_PublishedDate

  • MobileCustomListField_Whereabouts_User_Name

Plantillas de representación de elementos de lista de vista

Los elementos de lista se pueden representar en una vista móvil detallada o en una vista móvil sencilla, a veces denominada "resumen". Hay algunas plantillas con identificadores segmentados para representar elementos de lista en la vista sencilla. Los identificadores tienen el siguiente formato:

Mobile_IDTipoDeLista_SimpleViewItemRendering

IDTipoDeLista tiene el mismo significado que en las dos subsecciones anteriores.

Plantillas de representación de la lista de entradas de blog

SPMobilePostsListTitle selecciona Moblog_MyPosts_Titleo Moblog_AllPosts_Title para representar el título de una lista de entradas en un sitio móvil de blogs, en función de si el tipo de vista actual del sitio de blogs es Mis entradas de blog o Todas las entradas de blog.

Plantillas de "representación" de redirección

Un tipo de plantilla RenderingTemplate en MobileDefaultTemplates.ascx no representa nada en realidad. En su lugar, se puede usar en la cadena de llamadas de plantillas de representación para producir una redirección a otra página. Los identificadores tienen el siguiente formato:

Mobile_IDTipoDeSitio_tipoDePágina_Redirect

IDTipoDeSitio y tipoDePágina tienen el mismo significado que en la subsección "Plantillas de representación de variables de tipo de sitio" descrita anteriormente en este tema. Una plantilla de representación de este tipo llama a SPMobileHomePageRedirection que redirige la solicitud desde el dispositivo móvil a la página especificada en la propiedad PageFileName. El valor predeterminado es mblwp.aspx. A continuación, se presenta la declaración de la plantilla de representación que redirige a la página principal de un sitio de blog.

<SharePoint:RenderingTemplate RunAt="Server" 
  id="Mobile_BLOG_HomePage_Redirect">
  <Template>
    <SPMobile:SPMobileHomePageRedirection RunAt="Server" 
      PageFileName="bloghome.aspx" />
  </Template>
</SharePoint:RenderingTemplate>

Representación de secciones en una página principal móvil

Como se mencionó, "MobileHomePageTitle" tiene SPMobileWebTitle como valor de su elemento Template. SPMobileWebTitle llama a una RenderingTemplate que representará el área de encabezado (título) de una página principal móvil. Específicamente, buscará una RenderingTemplate con un identificador de Mobile_IDTipoDeSitio_HomePage_Title, donde IDTipoDeSitio es el nombre o el número de identificador de la definición de sitio del sitio web actual.

Si no existe ningún RenderingTemplate para la definición de sitio actual específica en ningún archivo .ascx en %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\CONTROLTEMPLATES, el sistema de representación usará Mobile_Default_HomePage_Title (que, a su vez, llamará a un control, SPMobileWeb, que simplemente representará el título del sitio web con un control Label). Para obtener más información acerca del uso de los controles RenderingTemplate de página principal que se incluyen con SharePoint Foundation, vea Procedimiento para personalizar las páginas principales móviles.

SPMobileWebContents y SPMobileWebNavigation seleccionan un control RenderingTemplate que representa, respectivamente, el área de contenido de la página principal, así como el área del pie de página (navegación) de una página principal móvil. Así, las tres primeras clases del selector buscarán los controles RenderingTemplate con identificadores en el modelo Mobile_IDTipoDeSitio_HomePage_áreaDePágina.

Representación de secciones en la vista de lista y en las páginas de formulario

Las clases SPMobileListTitle, SPMobileListContents y SPMobileListNavigation se usan en páginas de formulario y vista de lista. Cada una busca controles RenderingTemplate con identificadores en el modelo Mobile_IDTipoDeLista_tipoDePágina_áreaDePágina, donde tipoDePágina es View, NewForm, EditForm, DispForm o DeletePage, e IDTipoDeLista se define en la sección Identificadores segmentados de plantilla de representación previamente en este tema.

La mayoría de los tipos de lista integrados en SharePoint Foundation se representan mediante un valor en la enumeración SPListTemplateType. El tema de referencia para ese tipo especifica el valor entero subyacente de cada SPListTemplateType. Estos valores enteros se eligieron deliberadamente para que coincidan con el identificador numérico del tipo de lista. Por lo tanto, ese tema de referencia es efectivamente un catálogo de los números de identificador de lista.

Hay algunos tipos de lista que no tienen valores coincidentes en la enumeración. Se enumeran en la siguiente tabla con sus números de identificador. También se puede usar el número de identificador de los tipos de lista personalizados. Los números de identificador de los tipos de lista personalizados deberán tratarse de números mayores que 10000 para garantizar que no entren en conflicto con los números que Microsoft usará en futuras versiones de SharePoint Foundation. Por último, tenga en cuenta que los productos de Microsoft que se integran en SharePoint Foundation, como Microsoft SharePoint Server, pueden definir tipos de lista adicionales.

Identificador

Descripción

151

Biblioteca de Ayuda

400

Programación

401

Grupos FC

425

Novedades

1210

Listas de distribución

Si no existe un control RenderingTemplate con un identificador que especifica el tipo de lista actual, se usa un control RenderingTemplate con un identificador en el modelo Mobile_Default_tipoDePágina_áreaDePágina. Para obtener más información acerca de cómo trabajar con los controlesRenderingTemplate de la lista la representación incluidos en SharePoint Foundation, vea Procedimiento para personalizar las páginas de vista de lista móvil y formulario.

Representación de campos

SPMobileListFieldSelector selecciona los controles RenderingTemplate que representan campos específicos en las páginas de vista de lista, nueva, de edición o de presentación. Busca un RenderingTemplate con un identificador que utiliza el siguiente modelo: MobileCustomListField_IDTipoDeLista_tipoDeCampo_campo tal como se definió anteriormente en este tema en la sección Identificadores segmentados de plantilla de representación.

Si no existe ningún control RenderingTemplate con el identificador buscado, se usa el control RenderingTemplate con el identificador MobileDefaultListField. Para obtener más información acerca de cómo trabajar con los controles RenderingTemplate de representación de campos que se incluyen con SharePoint Foundation, consulte Procedimiento para personalizar la representación de campos en páginas móviles.

Diferencias entre la representación de campos para dispositivos móviles y la representación de campos para equipos

En SharePoint Foundation, la representación de campos con controles de representación de campos personalizados para dispositivos móviles es similar a la representación de campos con controles de representación de campos personalizados para equipos. No obstante, tenga en cuenta las siguientes diferencias:

Plantillas de representación anidadas

Las plantillas RenderingTemplate se pueden anidar. Consulte el ejemplo en Procedimiento para personalizar las páginas principales móviles.

Vea también

Tareas

Tutorial: Personalización de una página principal móvil

Procedimiento para personalizar las páginas de vista de lista móvil y formulario

Tutorial: Personalización de una página de vista de lista móvil

Procedimiento para personalizar las páginas principales móviles

Tutorial: Personalización de títulos de elementos en formularios móviles

Procedimiento para personalizar la representación de campos en páginas móviles

Conceptos

Introducción a las páginas móviles y el sistema de redirección

Diseño y paginación de las páginas móviles

Puntos suspensivos y límites de presentación

Procedimiento para crear una definición de tipo de campo personalizado

Descripción de los archivos Schema.xml

Descripción de los archivos Onet.xml