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