Come gestire multilingue soluzioni di Web Form in Visual Studio .NET o Visual Studio 2005

Traduzione articoli Traduzione articoli
Identificativo articolo: 315903 - Visualizza i prodotti a cui si riferisce l?articolo.
Questo articolo Ŕ stato archiviato. L?articolo, quindi, viene offerto ?cosý come Ŕ? e non verrÓ pi¨ aggiornato.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

In questo articolo viene illustrato come utilizzare un'isola di dati XML e il controllo server Web XML .NET per creare un progetto applicazione Web multilingua, piccolo, che visualizza i dati XML (Extensible Markup Language). L'applicazione principale viene creato nella Visual Basic .NET o Visual Basic 2005. L'applicazione utilizza un componente di libreria di classi Visual C# per illustrare i riferimenti multilingue e l'ereditarietÓ dell'implementazione.

Requisiti

Nell'elenco seguente sono indicati hardware, software, infrastruttura di rete e i service pack Ŕ necessario:
  • Microsoft Windows 2000 Professional, Microsoft Windows 2000 Server, Microsoft Windows XP Professional o Microsoft Windows XP Server con Microsoft .NET Framework e Microsoft Visual Studio .NET sia installato
In questo articolo si presume la conoscenza dei seguenti argomenti:
  • EreditarietÓ dell'implementazione
  • XML ed Extensible Stylesheet Language Transformation (XSLT)
  • Controlli server web di Microsoft .NET

Creazione di un'applicazione Web ASP.NET multilingue

Di seguito, Ŕ possibile creare un piccolo progetto applicazione Web ASP.NET che consente a un cliente selezionare voci di menu pranzo basati sul conteggio dei Caloria. Per effettuare questa operazione, l'esempio utilizza il controllo server Web XML un semplice documento XML contiene i dati di menu e un foglio di stile XSL per trasformare i dati XML. La classe XsltArgumentList dallo spazio dei nomi System.Xml.xsl consente di utilizzare i parametri nella trasformazione.
  1. Creare un progetto applicazione Windows Visual Basic come segue:
    1. Avviare Microsoft Visual Studio .NET o Microsoft Visual Studio 2005 e quindi fare clic su Nuovo progetto .
    2. In Tipi progetto fare clic su Progetti di Visual Basic . In modelli fare clic su Applicazione Web ASP.NET . Rinominare il menu progetto e quindi fare clic su OK .

      Nota In Visual Studio 2005, fare clic su Visual Basic in Tipi progetto .
  2. Assicurarsi che sia visibile la finestra Esplora soluzioni. In caso contrario, premere CTRL+ALT+L.
  3. Ora Ŕ la shell di un progetto Visual Basic .NET o applicazione Web di Visual Basic 2005 all'interno di una soluzione denominato menu. Per rendere una soluzione multilingua, Ŕ necessario aggiungere una libreria di classi C# Visual.

    Nella soluzione finestra Explorer, fare clic con il pulsante destro del mouse sul menu , scegliere Aggiungi , quindi Nuovo progetto . In Tipi progetto fare clic su Progetti di Visual C# . Fare clic su Libreria di classi in modelli . Consente di mantenere il nome predefinito, ClassLibrary1. Fare clic su OK per aggiungere questa libreria di classi alla soluzione.

    Nota Fare clic in Visual Studio 2005 su Visual C# in Tipi progetto.
  4. Class1.cs viene visualizzata nella finestra Editor. Aggiungere la seguente dichiarazione dello spazio dei nomi nella parte superiore della finestra:
    using System.Xml.Xsl;
    					
  5. In pubblica Class1 , aggiungere il seguente codice:
    public XsltArgumentList CreateArgumentList(
    string ParamName, string NamespaceURI, string ParamValue)
    {
     XsltArgumentList tal = new XsltArgumentList();
     tal.AddParam(ParamName, NamespaceURI, ParamValue);
     return tal;
    }
    					
  6. Ora Ŕ classe C# che accetta le informazioni sui parametri XSLT e che restituisce un'istanza della classe XsltArgumentList . ╚ ora possibile generare l'applicazione di Visual Basic che utilizzerÓ questo componente.

    WebForm1.aspx dovrebbe giÓ essere aperta in visualizzazione struttura. In caso contrario, fare doppio clic su WebForm1.aspx in Esplora soluzioni. Scegliere la scheda struttura sotto la finestra Editor per passare alla visualizzazione struttura.
  7. Premere il tasto F4 per accedere alla pagina proprietÓ. Cambiare la proprietÓ pageLayout su FlowLayout .
  8. In Web Form, digitare calorie massimo: .
  9. Aggiungere un controllo TextBox , un controllo Button e un controllo XML al modulo come indicato di seguito:
    1. Premere la combinazione di tasti CTRL + ALT + X per aprire la casella degli strumenti.
    2. Fare clic su Web Form nella casella di strumenti.
    3. Trascinare un controllo TextBox e un controllo Button dalla casella degli strumenti e rilasciarlo questi controlli sul Web Form.
    4. Premere F4 per accedere alla pagina proprietÓ per il controllo Button .
    5. Modificare la proprietÓ Text al Menu del filtro .
    6. Posizionare il cursore dopo il pulsante e quindi premere INVIO per posizionare il cursore per il controllo XML .
    7. Trascinare un controllo di server Web XML dalla casella degli strumenti e trascinare il controllo all'interno del Form Web.
    8. Premere F4 per accedere alla pagina proprietÓ del controllo XML .
    9. Modificare la proprietÓ DocumentSource Menu.xml e quindi modificare la proprietÓ OrigineTrasformazione per Menu.xslt .
  10. Fare doppio clic sul Menu del filtro per creare un gestore eventi Click nella classe code-behind del Web Form. Prima di aggiungere codice al gestore, Ŕ necessario aggiungere un riferimento alla libreria di classi C# Visual di nel modo seguente:
    1. Nella finestra Esplora, in ClassLibrary1 , fare clic con il pulsante destro del mouse su riferimenti e quindi fare clic su Aggiungi riferimento .
    2. Nella scheda progetti , fare doppio clic su ClassLibrary1 . Si noti che ClassLibrary1 viene visualizzata nella casella Componenti selezionati .
    3. Fare clic su OK . Si noti che ClassLibrary1 viene visualizzata nella casella riferimenti nell'applicazione Web.
  11. Aggiungere il codice seguente al gestore dell'evento Click :
    Dim myArgList As New ClassLibrary1.Class1()
    Xml1.TransformArgumentList = myArgList.CreateArgumentList("calories", "", TextBox1.Text)
    Xml1.Visible = True
    						
    l'elenco di argomenti che restituisce il componente di Visual C# consente di passare il valore del controllo TextBox come parametro al foglio di stile. Questo foglio di stile utilizza XSLT comandi per filtrare pranzo tutte le voci di menu che superano il Caloria conteggio che i tipi di clienti. Riga di codice dal foglio di stile riportato di seguito viene illustrato come il parametro Ŕ ricevuto e utilizzato:
    <xsl:for-each select="lunch-menu/food[calories <= $calories]">
    					
  12. Utilizzare il codice da sezioni Menu.xslt e il Menu.xml per creare i file Menu.xml e Menu.xslt. Nella finestra Esplora soluzioni, fare clic con il pulsante destro del mouse menu progetto e quindi aggiungere i file con estensione XML e XSLT.

Elenco completo del codice

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>
				

Esempio di ereditarietÓ 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 ereditÓ 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
				

Esempio di ereditarietÓ di 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 ereditÓ 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
				

Verifica del funzionamento

  1. Premere il tasto F5 per eseguire l'applicazione in modalitÓ di debug.
  2. Il menu intero viene visualizzato per impostazione predefinita. Annotare i conteggi Caloria per ciascun elemento.
  3. Nella casella di testo, digitare un numero di calorie e quindi fare clic su Filtro Menu . Si noti che vengono visualizzati solo gli elementi di menu che si trovano minore o uguale a tale importo Caloria.
  4. Premere la combinazione di tasti MAIUSC+F5 per interrompere il debug e tornare a Visual Studio.

Procedura per dimostrare l'ereditarietÓ multilingua

Per illustrare l'ereditarietÓ multilingua, Ŕ necessario modificare il Web progetto di applicazione. Invece di creare un'istanza della libreria di classi componente, l'applicazione eredita il Web Form di Visual Basic .NET classe code-behind.

La classe di codice sottostante eredita attualmente la classe System.Web.UI.Page . PerchÚ Microsoft .NET non supporta l'ereditarietÓ multipla, Ŕ necessario spostare l'ereditarietÓ di classe di pagina alla classe C#.
  1. Aggiungere un riferimento lo spazio dei nomi System.Web nella libreria di classi, prima di modificare Visual C# codice.
  2. Nella finestra Esplora, in ClassLibrary1 , fare clic con il pulsante destro del mouse su riferimenti e quindi fare clic su Aggiungi riferimento .
  3. Nella scheda .NET , fare doppio clic su System.Web.dll . Si noti che System.Web.dll viene visualizzata nella casella Componenti selezionati .
  4. Fare clic su OK . Si noti che System.Web viene visualizzata nella casella riferimenti nella libreria di classi.
  5. Modificare la dichiarazione Class1 ereditare la classe Page :
    public class Class1 : System.Web.UI.Page
    					
  6. La classe code-behind di Visual Basic .NET o Visual Basic 2005 Ŕ pronto ereditare Class1 . PoichÚ Class1 eredita la classe Page , la classe code-behind eredita anche la classe di pagina tramite l'ereditarietÓ di Class1 .

    Nella finestra Editor, fare clic su WebForm1.aspx.vb . Sotto la dichiarazione di classe, Ŕ necessario sostituire System.Web.UI.Page con ClassLibrary1.Class . Il codice aggiornato deve essere come segue:
    Inherits ClassLibrary1.Class1
    					
  7. Commento come indicato di seguito la prima riga nel gestore dell'evento Click :
    'Dim myArgList As New ClassLibrary1.Class1()
    					
  8. Modificare la seconda riga nel gestore eventi Click chiamando CreateArgumentList senza un riferimento a un oggetto:
    Xml1.TransformArgumentList = CreateArgumentList("calories", "", TextBox1.Text)
    					
  9. Ripetere i passaggi nella sezione Verify That It Works.

Risoluzione dei problemi

  • Quando si lavora con due lingue, Ŕ facile confondere la sintassi. Sintassi di Visual C# non consente un ampio margine di errore. Inoltre, messaggi di errore di Visual C# .NET non sono sempre come richiesta o come intuitivo come messaggi di errore di Visual Basic. NET. Per risolvere questi problemi, vedere la sezione "Equivalenti di linguaggio" di Microsoft .NET Framework Software Development Kit (SDK):
    Equivalenti di linguaggio
    http://msdn2.microsoft.com/en-us/library/czz35az4(vs.71).aspx
  • Se si desidera utilizzare l'ereditarietÓ dell'implementazione, studiare orientato a oggetti principi di progettazione e considerare in anticipo architettura dell'applicazione. Un errore comune consiste nell'inserire codice in un'applicazione principale che Ŕ necessario ereditare in una libreria di classe. In questo scenario, Ŕ impossibile ereditare l'applicazione principale in una libreria di classi a causa delle dipendenze circolari tra. Ad esempio, tentare di aggiungere un riferimento al progetto menu nel progetto ClassLibrary1. ╚ visualizzato il seguente messaggio di errore:
    Impossibile aggiungere un riferimento a "Menu". Aggiunge il progetto come riferimento causerebbe una dipendenza circolare.

RIFERIMENTI

Per ulteriori informazioni, vedere i seguenti siti Web Microsoft (informazioni in lingua inglese):
Esigenze primarie: Utilizzo dell'ereditarietÓ in. NET, parte 1
http://msdn.microsoft.com/en-us/magazine/cc135806.aspx

Esigenze primarie: Utilizzo dell'ereditarietÓ in. NET, parte 2
http://msdn.microsoft.com/en-us/magazine/cc301744.aspx

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

Controllo server Web Xml
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/gnconxmlwebservercontrol.asp

Isole di dati XML
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/comsrv2k/htm/cs_tp_bizdesk_nqok.asp

ProprietÓ

Identificativo articolo: 315903 - Ultima modifica: lunedý 24 febbraio 2014 - Revisione: 5.8
Le informazioni in questo articolo si applicano a:
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual Basic 2005
Chiavi:á
kbnosurvey kbarchive kbmt kbvs2005swept kbvs2005applies kbhowtomaster KB315903 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 315903
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

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