Comment gérer multilingues solutions Web Forms dans Visual Studio .NET ou Visual Studio 2005

Traductions disponibles Traductions disponibles
Numéro d'article: 315903 - Voir les produits auxquels s'applique cet article
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
Agrandir tout | Réduire tout

Sommaire

Résumé

Cet article montre comment utiliser un îlot de données XML et le contrôle serveur Web XML .NET pour créer un projet de petite taille, multilingue d'application Web qui affiche des données XML (Extensible Markup Language). L'application principale est générée dans Visual Basic .NET ou Visual Basic 2005. L'application utilise un composant de bibliothèque de classes Visual c# pour illustrer les références multilingues et l'héritage d'implémentation.

Configuration requise

La liste suivante présente le matériel, logiciels, infrastructure de réseau et service packs dont vous avez besoin :
  • Microsoft Windows 2000 Professionnel, Microsoft Windows 2000 Server, Microsoft Windows XP Professionnel ou Microsoft Windows XP Server avec le Microsoft .NET Framework et Microsoft Visual Studio .NET
Cet article suppose que vous êtes familiarisé avec les rubriques suivantes :
  • Héritage d'implémentation
  • XML et Extensible Stylesheet Language Transformation (XSLT)
  • Contrôles de serveur web de Microsoft .NET

Créer une Application Web ASP.NET multilingue

Dans les étapes suivantes, vous créez un petit projet Application Web ASP.NET qui permet à un client sélectionner des éléments de menu (e) manger basé sur comptage de calories. Pour ce faire, l'exemple utilise le contrôle serveur Web XML , un document XML simple qui contient les données de menu et une feuille de style XSL pour transformer les données XML. La classe XsltArgumentList à partir de l'espace de noms System.Xml.xsl vous permet d'utiliser paramètres dans la transformation.
  1. Créez un projet Application Windows Visual Basic comme suit :
    1. Démarrez Microsoft Visual Studio .NET ou Microsoft Visual Studio 2005 et puis cliquez sur Nouveau projet .
    2. Sous Types de projets , cliquez sur Projets Visual Basic . Sous modèles , cliquez sur Application Web ASP.NET . Renommer le menu projet et cliquez sur OK .

      Remarque Dans Visual Studio 2005, cliquez sur Visual Basic sous Types de projets .
  2. Assurez-vous que la fenêtre Explorateur de solutions est visible. Si elle n'est pas le cas, appuyez sur la combinaison de touches CTRL + ALT + L.
  3. Vous avez maintenant le shell d'un projet Visual Basic .NET ou Visual Basic 2005 Web Application dans une solution nommée menu. Pour que ce soit une solution multilingue, vous devez ajouter une bibliothèque de classes Visual c#.

    Dans la solution fenêtre Explorateur, cliquez avec le bouton droit sur menu , pointez sur Ajouter et cliquez sur Nouveau projet . Sous Types de projets , cliquez sur Projets Visual c# . Sous modèles , cliquez sur Bibliothèque de classes . Conservez le nom par défaut, ClassLibrary1. Cliquez sur OK pour ajouter cette bibliothèque de classes à la solution.

    Remarque Dans Visual Studio 2005, cliquez sur Visual c# sous Types de projets .
  4. Class1.cs apparaît dans la fenêtre Éditeur. Ajoutez la déclaration d'espace de noms suivante en haut de cette fenêtre :
    using System.Xml.Xsl;
    					
  5. Sous Class1 public , ajoutez le code suivant :
    public XsltArgumentList CreateArgumentList(
    string ParamName, string NamespaceURI, string ParamValue)
    {
     XsltArgumentList tal = new XsltArgumentList();
     tal.AddParam(ParamName, NamespaceURI, ParamValue);
     return tal;
    }
    					
  6. Vous avez maintenant une classe Visual c# qui accepte des informations sur les paramètres XSLT et qui retourne une instance de la classe XsltArgumentList . Vous pouvez maintenant créer l'application Visual Basic qui utilisera ce composant.

    WebForm1.aspx doit déjà être ouvert en mode Création. Dans le cas contraire, double-cliquez sur WebForm1.aspx dans la fenêtre Explorateur de solutions. Cliquez sur l'onglet Création sous la fenêtre Éditeur pour passer en mode Création.
  7. Appuyez sur la touche F4 pour accéder à la page de propriétés. Modifiez la propriété pageLayout a pour valeur FlowLayout .
  8. Dans le formulaire Web, tapez calories maximum : .
  9. Ajoutez un contrôle TextBox , un contrôle Button et un contrôle XML à l'écran comme suit :
    1. Appuyez sur la combinaison de touches CTRL + ALT + X pour ouvrir la boîte à outils.
    2. Dans la boîte à outils, cliquez sur Web Forms .
    3. Faites glisser un contrôle TextBox et un contrôle Button de la boîte à outils et déposez-le à ces contrôles sur le Web Form.
    4. Appuyez sur F4 pour accéder à la page de propriétés pour le contrôle Button .
    5. Modifiez la propriété Text au Menu de filtre .
    6. Placez le curseur après le bouton et appuyez sur ENTRÉE pour placer le curseur pour le contrôle XML .
    7. Faites glisser un contrôle de serveur Web XML à partir de la boîte à outils et supprimer ce contrôle sur le formulaire Web.
    8. Appuyez sur F4 pour accéder à la page de propriétés du contrôle XML .
    9. Modifiez la propriété DocumentSource menu.XML et modifiez la propriété TransformSource à Menu.xslt .
  10. Double-cliquez sur Menu de filtre pour créer un gestionnaire d'événements Click dans la classe code-behind du Web Form. Avant d'ajouter code au gestionnaire, vous devez ajouter une référence à la bibliothèque de classes Visual c# comme suit :
    1. Dans la fenêtre Explorateur de solutions, sous ClassLibrary1 , cliquez avec le bouton droit sur références , puis cliquez sur Ajouter une référence .
    2. Sur l'onglet projets , double-cliquez sur ClassLibrary1 . Notez que ClassLibrary1 s'affiche dans la zone de liste Composants sélectionnés .
    3. Cliquez sur OK . Notez que ClassLibrary1 apparaît sous références dans l'application Web.
  11. Ajoutez le code suivant au gestionnaire d'événement Click :
    Dim myArgList As New ClassLibrary1.Class1()
    Xml1.TransformArgumentList = myArgList.CreateArgumentList("calories", "", TextBox1.Text)
    Xml1.Visible = True
    						
    la liste d'argument qui renvoie le composant Visual c# vous passer la valeur du contrôle TextBox en tant que paramètre à la feuille de style permet. Cette feuille de style utilise des commandes XSLT pour filtrer les déjeuner tous les éléments de menu qui dépassent les calories compte calcul qui les types de client. La ligne de code à partir de la feuille de style suivante illustre comment le paramètre est reçu et utilisé :
    <xsl:for-each select="lunch-menu/food[calories <= $calories]">
    					
  12. Le code de Menu.xml et les sections Menu.xslt permet de créer les fichiers menu.XML et Menu.xslt. Dans la fenêtre Explorateur de solutions, cliquez avec le bouton droit sur le Menu Projet, puis ajoutez les fichiers .XML et .XSLT.

Terminer la liste des codes

Menu.Xml

<?xml version='1.0'?>
<lunch-menu>
  <food>
    <name>Cheese Pizza</name>
    <price>$6.95</price>
    <description>Individual deep-dish pizza with lots of mozzarella cheese</description>
    <calories>800</calories>
  </food>
  <food>
    <name>Pepperoni Pizza</name>
    <price>$7.95</price>
    <description>Individual deep-dish cheese pizza with thick-cut pepperoni slices</description>
    <calories>950</calories>
  </food>
  <food>
    <name>The "Everything" Pizza</name>
    <price>$9.95</price>
    <description>Individual deep-dish pizza with all our toppings. House specialty!</description>
    <calories>800</calories>  </food>
  <food>
    <name>Hungarian Ghoulash</name>
    <price>$4.50</price>
    <description>Large serving in a sourdough bread bowl. A_local delight!</description>
    <calories>600</calories>
  </food>
  <food>
    <name>Maisey's Pork Sandwich</name>
    <price>$6.95</price>
    <description>A fresh pork fillet, deep-fried to perfection. Served with fries.</description>
    <calories>950</calories>
  </food>
</lunch-menu>
				

Menu.XSLT

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:param name="calories">1500</xsl:param>
  <xsl:template match="/">
    <HTML>
      <BODY STYLE="font-family:Arial, helvetica, sans-serif; font-size:12pt;
            background-color:#EEEEEE">
        <xsl:for-each select="lunch-menu/food[calories <= $calories]">
          <DIV STYLE="background-color:blue; color:white; padding:4px">
            <SPAN STYLE="font-weight:bold; color:white"><xsl:value-of select="name"/></SPAN>
            - <xsl:value-of select="price"/>
          </DIV>
          <DIV STYLE="margin-left:20px; margin-bottom:1em; font-size:10pt">
            <xsl:value-of select="description"/>
            <SPAN STYLE="font-style:italic">
              (<xsl:value-of select="calories"/> calories per serving)
            </SPAN>
          </DIV>
        </xsl:for-each>
      </BODY>
    </HTML>
  </xsl:template>
</xsl:stylesheet>
				

WebForm1.aspx

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="menu.WebForm1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
  <HEAD>
    <title>WebForm1</title>
    <meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">
    <meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
    <meta name=vs_defaultClientScript content="JavaScript">
    <meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">
  </HEAD>
  <body >

    <form id="Form1" method="post" runat="server">
<P>Maximum Calories: 
<asp:TextBox id="TextBox1" runat="server"></asp:TextBox>
<asp:Button id="Button1" runat="server" Text="Filter menu"></asp:Button></P>
<P>
<asp:Xml id="Xml1" runat="server" DocumentSource="menu.xml" TransformSource="menu.xslt"></asp:Xml></P>

    </form>

  </body>
</HTML>
				

Exemple d'héritage Non Class1.cs

using System;
using System.Xml.Xsl;

namespace ClassLibrary1
{
    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    public class Class1
    {
        public XsltArgumentList CreateArgumentList(
        string ParamName, string NamespaceURI, string ParamValue)
        {
            XsltArgumentList tal = new XsltArgumentList();
            tal.AddParam(ParamName, NamespaceURI, ParamValue);
            return tal;
        }
    }
}
				

WebForm1.vb héritage System.Web.UI.page

Imports System.Xml.Xsl

Public Class WebForm1
    Inherits System.Web.UI.Page
    Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox
    Protected WithEvents Button1 As System.Web.UI.WebControls.Button
    Protected WithEvents Xml1 As System.Web.UI.WebControls.Xml

#Region " Web Form Designer Generated Code "

    'The Web Form Designer requires this call.
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

    End Sub

    Private Sub Page_Init(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles MyBase.Init
        'CODEGEN: The Web Form Designer requires this method call.
        'Do not use the Code editor to modify it.
        InitializeComponent()
    End Sub

#End Region

    Private Sub Page_Load(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles MyBase.Load
        'Insert user code to initialize the page here.
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button1.Click
        Dim tal As New XsltArgumentList()
        tal.AddParam("calories", "", TextBox1.Text)
        Xml1.TransformArgumentList = tal
        Xml1.Visible = True
    End Sub
End Class
				

Exemple d'héritage Class1.cs

using System;
using System.Xml.Xsl;

namespace ClassLibrary1
{
    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    public class Class1 : System.Web.UI.Page
    {
        public XsltArgumentList CreateArgumentList(
        string ParamName, string NamespaceURI, string ParamValue)
        {
            XsltArgumentList tal = new XsltArgumentList();
            tal.AddParam(ParamName, NamespaceURI, ParamValue);
            return tal;
        }
    }
}
				

WebForm1.vb héritage ClassLibrary1

Imports System.Xml.Xsl

Public Class WebForm1
    Inherits ClassLibrary1.Class1
    Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox
    Protected WithEvents Button1 As System.Web.UI.WebControls.Button
    Protected WithEvents Xml1 As System.Web.UI.WebControls.Xml

#Region " Web Form Designer Generated Code "

    'The Web Form Designer requires this call.
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

    End Sub

    Private Sub Page_Init(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles MyBase.Init
        'CODEGEN: The Web Form Designer requires this method call.
        'Do not use the Code editor to modify it.
        InitializeComponent()
    End Sub

#End Region

    Private Sub Page_Load(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles MyBase.Load
        'Insert user code to initialize the page here.
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button1.Click
    Xml1.TransformArgumentList = CreateArgumentList("calories", "", TextBox1.Text)
        Xml1.Visible = True
    End Sub
End Class
				

Vérifier qu'il fonctionne

  1. Appuyez sur la touche F5 pour exécuter l'application en mode débogage.
  2. Le menu complet s'affiche par défaut. Notez le nombre de calories pour chaque élément.
  3. Dans la zone de texte, tapez un nombre de calories et puis cliquez sur Menu Filtre . Avertissement qui s'affichent uniquement les éléments de menu inférieur ou égal à ce montant calories.
  4. Appuyez sur la combinaison de touches MAJ + F5 pour arrêter le débogage et revenir à Visual Studio.

Étapes pour Montrez l'héritage multilingue

Pour illustrer l'héritage multilingue, vous devez modifier le site Web projet d'application. Au lieu de créer une instance de la bibliothèque de classes composant, l'application hérite le formulaire Web de Visual Basic .NET classe code-behind.

La classe code-behind hérite actuellement la classe System.Web.UI.page . Étant donné que Microsoft .NET ne prend pas en charge l'héritage multiple, vous devez déplacer l'héritage de classe de page à la classe Visual c#.
  1. Ajouter une référence à l'espace de noms System.Web dans la bibliothèque de classes avant de modifier le c# code.
  2. Dans la fenêtre Explorateur de solutions, sous ClassLibrary1 , cliquez avec le bouton droit sur références , puis cliquez sur Ajouter une référence .
  3. Sur l'onglet .NET , double-cliquez sur System.Web.dll . Notez que System.Web.dll s'affiche dans la zone de liste Composants sélectionnés .
  4. Cliquez sur OK . Notez que System.Web apparaît sous références dans votre bibliothèque de classes.
  5. Modifiez la déclaration Class1 pour hériter de la classe page :
    public class Class1 : System.Web.UI.Page
    					
  6. La classe code-behind Visual Basic .NET ou Visual Basic 2005 est prêt à hériter de Class1 . Comme Class1 hérite de la classe page , la classe code-behind hérite également la classe page via son héritage de Class1 .

    Dans la fenêtre de l'éditeur, cliquez sur WebForm1.aspx.vb . Sous la déclaration de classe, remplacez ClassLibrary1.Class System.Web.UI.page . Le code mis à jour doit apparaître comme suit :
    Inherits ClassLibrary1.Class1
    					
  7. Commentez la première ligne dans le Gestionnaire d'événements Click comme suit :
    'Dim myArgList As New ClassLibrary1.Class1()
    					
  8. Modifier la deuxième ligne dans le Gestionnaire d'événements Click en appelant CreateArgumentList sans une référence d'objet :
    Xml1.TransformArgumentList = CreateArgumentList("calories", "", TextBox1.Text)
    					
  9. Répétez les étapes dans la section Verify That It Works.

Résolution des problèmes

  • Lorsque vous travaillez avec deux langues, il est facile de confondre syntaxe. Syntaxe Visual c# n'autorise pas une large marge d'erreur. En outre, messages d'erreur Visual c# .NET ne sont toujours pas comme invite de commandes ou aussi intuitive que messages d'erreur Visual Basic .NET. Pour résoudre ces difficultés, reportez-vous à la section «Langage Equivalents» de la Microsoft .NET Framework Kit de développement (SDK) :
    Équivalents de langage
    http://msdn2.microsoft.com/en-us/library/czz35az4(vs.71).aspx
  • Si vous souhaitez utiliser l'héritage d'implémentation, étudier et orienté objet principes de conception et architecture d'application à l'avance. Une erreur courante consiste à placer le code dans une application principale que vous souhaitez hériter dans une bibliothèque de classes. Dans ce scénario, vous ne pouvez pas hériter l'application principale dans une bibliothèque de classes en raison des dépendances circulaires. Par exemple, essayez d'ajouter une référence au menu projet dans le projet ClassLibrary1. Vous recevez message d'erreur suivantes :
    Impossible d'ajouter une référence à «Menu». L'ajout de ce projet en tant que référence entraînerait une dépendance circulaire.

RÉFÉRENCES

Pour plus d'informations, reportez-vous aux sites Web Microsoft suivant :
Instincts de base : L'aide de l'héritage dans .NET, partie 1
http://msdn.microsoft.com/en-us/magazine/cc135806.aspx

Instincts de base : L'aide de l'héritage dans .NET, partie 2
http://msdn.microsoft.com/en-us/magazine/cc301744.aspx

XML Core
http://msdn.microsoft.com/en-us/xml/bb291077.aspx

Contrôle serveur Web XML
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/gnconxmlwebservercontrol.asp

XML Data-Îles
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/comsrv2k/htm/cs_tp_bizdesk_nqok.asp

Propriétés

Numéro d'article: 315903 - Dernière mise à jour: lundi 24 février 2014 - Version: 5.8
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual Basic .NET 2002 Initiation
  • Microsoft Visual Basic .NET 2003 Initiation
  • Microsoft Visual C# .NET 2002 Initiation
  • Microsoft Visual C# .NET 2003 Initiation
  • Microsoft Visual Basic 2005
Mots-clés : 
kbnosurvey kbarchive kbmt kbvs2005swept kbvs2005applies kbhowtomaster KB315903 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 315903
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com