DeviceSpecific, classe
Fournit une construction pour spécifier un choix parmi plusieurs alternatives de contenu dans l'élément <DeviceSpecific>.
Espace de noms : System.Web.UI.MobileControls
Assembly : System.Web.Mobile (dans system.web.mobile.dll)
Syntaxe
'Déclaration
Public Class DeviceSpecific
Inherits Control
'Utilisation
Dim instance As DeviceSpecific
public class DeviceSpecific : Control
public ref class DeviceSpecific : public Control
public class DeviceSpecific extends Control
public class DeviceSpecific extends Control
Notes
Dans un élément <DeviceSpecific>, vous spécifiez généralement un ou plusieurs éléments <Choice>, chacun contenant des attributs qui définissent comment évaluer le choix par rapport aux fonctionnalités du périphérique cible. Au moment de l'exécution, chaque choix est évalué dans l'ordre et le premier choix qui est évalué avec succès est utilisé. La construction DeviceSpecific/Choice est utilisée pour spécifier des jeux de modèles et des propriétés de substitution ; elle peut par exemple être utilisée pour spécifier des images spécifiques au périphérique pour le contrôle Image.
Notes
Bien que la classe DeviceSpecific hérite de l'espace de noms Web Forms System.Web.UI.Control, il s'agit uniquement d'un détail d'implémentation. Un élément <Choice> ne se comporte pas comme un contrôle.
Exemple
L'exemple de code suivant montre comment utiliser des objets DeviceSpecific et DeviceSpecificChoice pour créer des interfaces spécifiques à divers périphériques 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, 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>
Pour ces exemples, le fichier Web.config doit comporter les éléments suivants :
<!-- 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 fonctionner 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.DeviceSpecific
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 DeviceSpecific
System.Web.UI.MobileControls, espace de noms
Choices
Autres ressources
<DeviceSpecific>, élément
<Choice>, élément (Guide du développeur .NET Framework)
Introduction au contrôle DeviceSpecific