Partager via


TemplateContainer, classe

Dérivé de la classe Panel et utilisé par ASP.NET pour contenir des modèles DeviceSpecificChoice.

Espace de noms : System.Web.UI.MobileControls
Assembly : System.Web.Mobile (dans system.web.mobile.dll)

Syntaxe

'Déclaration
Public Class TemplateContainer
    Inherits Panel
    Implements INamingContainer
'Utilisation
Dim instance As TemplateContainer
public class TemplateContainer : Panel, INamingContainer
public ref class TemplateContainer : public Panel, INamingContainer
public class TemplateContainer extends Panel implements INamingContainer
public class TemplateContainer extends Panel implements INamingContainer

Notes

Si un contrôle mobile fournit des fonctionnalités de rendu avec modèles par le biais de modèles de périphériques, il doit créer des instances de chaque modèle à l'intérieur d'un contrôle distinct de type TemplateContainer. Si une expression de liaison de données est présente dans un contrôle d'un modèle, la variable Container de l'expression est toujours de type TemplateContainer.

Exemple

L'exemple de code suivant montre comment utiliser des objets TemplateContainer pour créer des modèles dans un objet DeviceSpecific présent dans un formulaire mobile.

Notes

L'exemple de code suivant utilise un modèle de code de fichier unique ; il est possible qu'il ne fonctionne pas correctement s'il est directement copié dans un fichier code-behind. Cet exemple de code doit être copié dans un fichier texte vide doté d'une extension .aspx. Pour plus d'informations sur le modèle de code des Web Forms, consultez Modèle de code des pages Web ASP.NET.

<%@ Page Language="VB" 
    Inherits="System.Web.UI.MobileControls.MobilePage" %>
<%@ Register TagPrefix="mobile" 
    Namespace="System.Web.UI.MobileControls" 
    Assembly="System.Web.Mobile" %>

<script runat="server">
    Private Sub Form_Init(ByVal sender As Object, ByVal e As EventArgs)
        ' Create a DeviceSpecific group for Choice elements
        Dim devSpecific As New DeviceSpecific()
        Dim ipa As IParserAccessor

        ' Create two Choice objects, one with a filter
        For i As Integer = 0 To 1
            Dim devChoice As DeviceSpecificChoice
            Dim custTemplate As ITemplate

            ' Create a Choice object 
            devChoice = New DeviceSpecificChoice()
            ' Only the first Choice has a filter (must be in Web.config)
            If i = 0 Then
                devChoice.Filter = "isHTML32"

                ' Create the header template.
                custTemplate = New CustomTemplate("HeaderTemplate")
                ' Put header template in a new container
                custTemplate.InstantiateIn(New TemplateContainer())
                ' Add the header template to the Choice
                devChoice.Templates.Add("HeaderTemplate", custTemplate)

                ' Create the footer template
                custTemplate = New CustomTemplate("FooterTemplate")
                ' Put footer template in a new container
                custTemplate.InstantiateIn(New TemplateContainer())
                ' Add the footer template to the Choice
                devChoice.Templates.Add("FooterTemplate", custTemplate)
            End If
            
            ' Add the Choice to the DeviceSpecific
            ipa = CType(devSpecific, IParserAccessor)
            ipa.AddParsedSubObject(devChoice)
        Next

        ' Add the DeviceSpecific object to the form
        ipa = CType(Form1, IParserAccessor)
        ipa.AddParsedSubObject(devSpecific)
    End Sub

    Protected Sub Page_Load(ByVal sender As Object, _
        ByVal e As EventArgs)

        Dim lab As System.Web.UI.MobileControls.Label
        lab = CType(Form1.Header.FindControl("Label1"), _
            System.Web.UI.MobileControls.Label)
        If IsNothing(lab) Then Return

        ' Get the selected choice's filter name
        Dim filterName As String = _
        Form1.DeviceSpecific.SelectedChoice.Filter
        If filterName = "isHTML32" Then
            lab.Text += " - HTML32"
        Else
            lab.Text += " - Default"
        End If
    End Sub

    Public Class CustomTemplate
        Implements ITemplate
        Dim templName As String

        ' Constructor
        Public Sub New(ByVal TemplateName As String)
            templName = TemplateName
        End Sub

        Public Sub InstantiateIn(ByVal container As Control) _
            Implements ITemplate.InstantiateIn
            
            If templName = "HeaderTemplate" Then
                ' Create a label
                Dim lab As New System.Web.UI.MobileControls.Label
                lab.Text = "Header Template"
                lab.ID = "Label1"

                ' Create a command
                Dim cmd As New Command()
                cmd.Text = "Submit"

                ' Add controls to the container
                container.Controls.Add(lab)
                container.Controls.Add(cmd)
            
            ElseIf templName = "FooterTemplate" Then
                ' Create a label
                Dim lab As System.Web.UI.MobileControls.Label
                lab = New System.Web.UI.MobileControls.Label()
                lab.ID = "Label2"
                lab.Text = "Footer Template"

                ' Add label to the container
                container.Controls.Add(lab)
            End If
        End Sub
    End Class

</script>

<html xmlns="http:'www.w3.org/1999/xhtml" >
<body>
    <mobile:form id="Form1" runat="server" 
        OnInit="Form_Init">
    </mobile:form>
</body>
</html>
<%@ Page Language="C#" 
    Inherits="System.Web.UI.MobileControls.MobilePage" %>
<%@ Register TagPrefix="mobile" 
    Namespace="System.Web.UI.MobileControls" 
    Assembly="System.Web.Mobile" %>

<script runat="server">
    private void Form_Init(object sender, System.EventArgs e)
    {
        // Create a DeviceSpecific group for Choice elements
        DeviceSpecific devSpecific = new DeviceSpecific();

        // Create two Choice objects, one with a filter
        for (int i = 0; i < 2; i++)
        {
            DeviceSpecificChoice devChoice;
            ITemplate custTemplate;

            // Create a Choice object 
            devChoice = new DeviceSpecificChoice();
            // Only the first Choice has a filter (must be in Web.config)
            if (i == 0)
                devChoice.Filter = "isHTML32";

            // Create the header template.
            custTemplate = new CustomTemplate("HeaderTemplate");
            // Put header template in a new container
            custTemplate.InstantiateIn(new TemplateContainer());
            // Add the header template to the Choice
            devChoice.Templates.Add("HeaderTemplate", custTemplate);

            // Create the footer template
            custTemplate = new CustomTemplate("FooterTemplate");
            // Put footer template in a new container
            custTemplate.InstantiateIn(new TemplateContainer());
            // Add the footer template to the Choice
            devChoice.Templates.Add("FooterTemplate", custTemplate);

            // Add the Choice to the DeviceSpecific
            ((IParserAccessor)devSpecific).AddParsedSubObject(devChoice);
        }

        // Add the DeviceSpecific object to the form
        ((IParserAccessor)Form1).AddParsedSubObject(devSpecific);
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        System.Web.UI.MobileControls.Label lab;
        lab = (System.Web.UI.MobileControls.Label)Form1.Header.FindControl("Label1");
        if (lab == null)
            return;

        // Get the selected choice's filter name
        string filterName = 
            Form1.DeviceSpecific.SelectedChoice.Filter;
        if (filterName == "isHTML32")
            lab.Text += " - HTML32";
        else
            lab.Text += " - Default";
    }

    public class CustomTemplate : ITemplate
    {
        String templateName;

        // Constructor
        public CustomTemplate(string TemplateName)
        {
            templateName = TemplateName;
        }

        public void InstantiateIn(Control container)
        {
            if (templateName == "HeaderTemplate")
            {
                // Create a label
                System.Web.UI.MobileControls.Label lab;
                lab = new System.Web.UI.MobileControls.Label();
                lab.Text = "Header Template";
                lab.ID = "Label1";

                // Create a command
                Command cmd = new Command();
                cmd.Text = "Submit";

                // Add controls to the container
                container.Controls.Add(lab);
                container.Controls.Add(cmd);
            }
            else if (templateName == "FooterTemplate")
            {
                // Create a label
                System.Web.UI.MobileControls.Label lab;
                lab = new System.Web.UI.MobileControls.Label();
                lab.ID = "Label2";
                lab.Text = "Footer Template";

                // Add label to the container
                container.Controls.Add(lab);
            }
        }
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<body>
    <mobile:form id="Form1" runat="server" OnInit="Form_Init">
    </mobile:form>
</body>
</html>

Tout le code ci-dessus peut être remplacé de façon déclarative par la balise suivante :

<html xmlns="http://www.w3.org/1999/xhtml" >
<body>
    <mobile:Form id="Form1" runat="server">
        <mobile:DeviceSpecific Runat="server">
            <Choice Filter="isHTML32">
                <HeaderTemplate>
                    <mobile:Label ID="Label1" Runat="server">
                        Header Template - HTML32</mobile:Label>
                    <mobile:Command Runat="server">
                        Submit</mobile:Command>
                </HeaderTemplate>
                <FooterTemplate>
                    <mobile:Label ID="Label2" Runat="server">
                        Footer Template</mobile:Label>
                </FooterTemplate>
            </Choice>
            <Choice>
                <HeaderTemplate>
                    <mobile:Label ID="Label1" Runat="server">
                        Header Template - Default</mobile:Label>
                    <mobile:Command ID="Command1" Runat="server">
                        Submit</mobile:Command>
                </HeaderTemplate>
                <FooterTemplate>
                    <mobile:Label ID="Label2" Runat="server">
                        Footer Template</mobile:Label>
                </FooterTemplate>
            </Choice>
        </mobile:DeviceSpecific>
    </mobile:Form>
</body>
</html>

Le fichier Web.config doit incorporer les lignes suivantes :

<!-- In Web.config file -->
<deviceFilters>
  <filter name="isHTML32" compare="PreferredRenderingType" argument="html32" />
</deviceFilters>

Sécurité .NET Framework

  • AspNetHostingPermission  pour opérer dans un environnement hébergé. Valeur de demande : LinkDemand ; valeur d'autorisation : Minimal
  • AspNetHostingPermission  pour opérer dans un environnement hébergé. Valeur de demande : InheritanceDemand ; valeur d'autorisation : Minimal

Hiérarchie d'héritage

System.Object
   System.Web.UI.Control
     System.Web.UI.MobileControls.MobileControl
       System.Web.UI.MobileControls.Panel
        System.Web.UI.MobileControls.TemplateContainer
           System.Web.UI.MobileControls.MobileListItem

Sécurité des threads

Les membres statiques publics (Shared en Visual Basic) de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Plates-formes

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition

Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.

Informations de version

.NET Framework

Prise en charge dans : 2.0, 1.1

Voir aussi

Référence

Membres TemplateContainer
System.Web.UI.MobileControls, espace de noms
MobileListItem, classe

Autres ressources

Understanding ASP.NET Adaptive Rendering
Contrôles conteneurs
Développement d'applications Web mobiles
Fonctionnalités des périphériques mobiles