Como gerenciar multilíngües soluções de Web Forms no Visual Studio .NET ou Visual Studio 2005

Traduções deste artigo Traduções deste artigo
ID do artigo: 315903 - Exibir os produtos aos quais esse artigo se aplica.
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Este artigo demonstra como usar uma ilha de dados XML e o controle de servidor da Web de XML do .NET para criar um projeto Web Application pequeno, multilíngüe que exibe dados Extensible Markup Language (XML). O aplicativo principal é compilado no Visual Basic .NET ou Visual Basic 2005. O aplicativo usa um componente de biblioteca de classes translation from VPE for Csharp Visual para ilustrar referências multilíngües e herança de implementação.

Requisitos

A lista a seguir descreve o hardware recomendado, software, infra-estrutura de rede e service packs que você precisa:
  • Microsoft Windows 2000 Professional, Microsoft Windows 2000 Server, Microsoft Windows XP Professional ou Windows XP Server com o Microsoft .NET Framework e o Microsoft Visual Studio .NET instalados
Este artigo pressupõe que você esteja familiarizado com os seguintes tópicos:
  • Herança de implementação
  • XML e Extensible Stylesheet Language Transformation (XSLT)
  • Controles de servidor do Microsoft .NET da web

Criar um aplicativo ASP.NET multilíngüe

As seguintes etapas, você cria um pequeno projeto ASP.NET Web Application que permite que um cliente para selecionar itens de menu do almoço com base na contagem de calorias. Para fazer isso, o exemplo usa o controle do servidor Web XML , um documento XML simples que contém os dados de menu e uma folha de estilos XSL para transformar dados XML. A classe XsltArgumentList do namespace System.XML.xsl permite que você usar parâmetros na transformação.
  1. Crie um projeto Visual Basic Windows Application da seguinte maneira:
    1. Inicie o Microsoft Visual Studio .NET ou Microsoft Visual Studio 2005 e, em seguida, clique em New Project .
    2. Em Project Types , clique em Projetos do Visual Basic . Em modelos , clique em ASP.NET Web Application . Renomeie o projeto menu e, em seguida, clique em OK .

      Observação No Visual Studio 2005, clique em Visual Basic em Project Types .
  2. Verifique se a janela do Solution Explorer está visível. Se não estiver, pressione a combinação de teclas CTRL + ALT + L.
  3. Agora você tem o shell de um projeto Visual Basic.NET ou Visual Basic 2005 Web Application dentro de uma solução chamada menu. Para fazer uma solução de vários idiomas, você deve adicionar uma biblioteca de classes translation from VPE for Csharp Visual.

    No Solution Explorer janela, clique com o botão direito do mouse em menu , aponte para Add e em seguida, clique em New Project . Em Project Types , clique em projetos translation from VPE for Csharp Visual . Em modelos , clique em Class Library . Mantenha o nome padrão, ClassLibrary1. Clique em OK para adicionar esta biblioteca de classes à solução.

    Observação No Visual Studio 2005, clique em translation from VPE for Csharp Visual em Tipos de projeto .
  4. Class1.cs aparece na janela Editor. Adicione a declaração de namespace a seguir na parte superior desta janela:
    using System.Xml.Xsl;
    					
  5. Em Class1 pública , adicione o código a seguir:
    public XsltArgumentList CreateArgumentList(
    string ParamName, string NamespaceURI, string ParamValue)
    {
     XsltArgumentList tal = new XsltArgumentList();
     tal.AddParam(ParamName, NamespaceURI, ParamValue);
     return tal;
    }
    					
  6. Agora você tem uma classe translation from VPE for Csharp Visual que obtém informações de parâmetro do XSLT e que retorna uma instância da classe XsltArgumentList . Agora você pode criar o aplicativo Visual Basic que irá consumir este componente.

    WebForm1.aspx já deve estar aberto no modo Design. Caso contrário, clique duas vezes em WebForm1.aspx na janela Solution Explorer. Clique na guia Design abaixo da janela Editor para alternar para o modo Design.
  7. Pressione a tecla F4 para acessar a página de propriedades. Altere a propriedade pageLayout para FlowLayout .
  8. No formulário da Web, digite calorias máximo: .
  9. Adicione um controle TextBox , um controle Button e um controle XML para o formulário da seguinte maneira:
    1. Pressione a combinação de teclas CTRL + ALT + X para abrir a caixa de ferramentas.
    2. Na caixa de ferramentas, clique em Web Forms .
    3. Arraste um controle TextBox e um controle de botão da caixa de ferramentas e solte esses controles para a Web Form.
    4. Pressione F4 para acessar a página de propriedades para o controle Button .
    5. Altere a propriedade Text para Menu de filtro .
    6. Posicione o cursor após o botão e, em seguida, pressione ENTER para posicionar o cursor para o controle XML .
    7. Arraste um controle do servidor Web XML da caixa de ferramentas e solte esse controle no formulário da Web.
    8. Pressione F4 para acessar a página de propriedades do controle XML .
    9. Altere a propriedade DocumentSource para Menu.xml e, em seguida, altere a propriedade TransformSource para Menu.xslt .
  10. Clique duas vezes em Filtro Menu para criar um manipulador de eventos Click na classe code-behind de formulário da Web. Antes de adicionar código ao manipulador, você deve adicionar uma referência à biblioteca de classes translation from VPE for Csharp Visual da seguinte maneira:
    1. Na janela Solution Explorer, em ClassLibrary1 , clique com o botão direito do mouse em References e, em seguida, clique em Add Reference .
    2. Na guia projetos , clique duas vezes em ClassLibrary1 . Observe que ClassLibrary1 aparece na caixa de lista de Componentes selecionados .
    3. Clique em OK . Observe que ClassLibrary1 é exibido em referências no aplicativo da Web.
  11. Adicione o seguinte código ao manipulador de evento Click :
    Dim myArgList As New ClassLibrary1.Class1()
    Xml1.TransformArgumentList = myArgList.CreateArgumentList("calories", "", TextBox1.Text)
    Xml1.Visible = True
    						
    a lista de argumento retorna o componente translation from VPE for Csharp Visual permite que você passar o valor do controle TextBox como um parâmetro para a folha de estilos. Esta folha de estilos usa comandos XSLT para filtrar almoço todos os itens de menu que excedem a calorias contagem que os tipos de cliente. A linha de código de folha de estilos a seguir ilustra como o parâmetro é recebido e usado:
    <xsl:for-each select="lunch-menu/food[calories <= $calories]">
    					
  12. Use o código de Menu.xml e as seções Menu.xslt para criar os arquivos Menu.xml e Menu.xslt. Na janela Solution Explorer, clique o projeto de menu com o botão direito do mouse e, em seguida, adicionar os arquivos .XML e .XSLT.

Concluir a listagem de código

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>
				

Exemplo de herança não 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 Inheriting 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
				

Exemplo de herança de 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 Inheriting 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
				

Verificar se ele funciona

  1. Pressione a tecla F5 para executar o aplicativo no modo de depuração.
  2. O menu inteiro é exibido por padrão. Anote as contagens de calorias para cada item.
  3. Na caixa de texto, digite um número de calorias e, em seguida, clique em Filtro Menu . Observe que somente os itens de menu que são menor ou igual a esse valor de calorias são exibidas.
  4. Pressione a combinação de teclas SHIFT + F5 para parar a depuração e retornar para o Visual Studio.

Etapas para demonstrar herança multilíngüe

Para ilustrar multilíngüe herança, você deve modificar a Web Application projeto. Em vez de criar uma instância da biblioteca de classe de componente, o aplicativo herda o formulário do Visual Basic .NET da Web classe code-behind.

A classe code-behind atualmente herda a classe System.Web.UI.Page . Porque Microsoft .NET não dá suporte herança múltipla, você deve mover herança da classe de página para a classe translation from VPE for Csharp Visual.
  1. Adicionar uma referência ao namespace System.Web na biblioteca de classes antes de modificar translation from VPE for Csharp Visual código.
  2. Na janela Solution Explorer, em ClassLibrary1 , clique com o botão direito do mouse em References e, em seguida, clique em Add Reference .
  3. Na guia .NET , clique duas vezes em System.Web.dll . Observe que System.Web.dll aparece na caixa de lista de Componentes selecionados .
  4. Clique em OK . Observe que System.Web é exibido em referências na sua biblioteca de classes.
  5. Modifique a declaração Class1 para herdar da classe de página :
    public class Class1 : System.Web.UI.Page
    					
  6. A classe de code-behind do Visual Basic .NET ou Visual Basic 2005 agora está pronta para herdar Class1 . Como Class1 herda a classe de página , a classe code-behind também herda a classe de página por meio de sua herança de Class1 .

    Na janela do Editor, clique em WebForm1.aspx.vb . Sob a declaração de classe, substitua System.Web.UI.Page ClassLibrary1.Class . O código atualizado deve aparecer da seguinte maneira:
    Inherits ClassLibrary1.Class1
    					
  7. Comentar a primeira linha no manipulador de eventos Click da seguinte maneira:
    'Dim myArgList As New ClassLibrary1.Class1()
    					
  8. Modificar a segunda linha no manipulador de evento Click chamando CreateArgumentList sem uma referência de objeto:
    Xml1.TransformArgumentList = CreateArgumentList("calories", "", TextBox1.Text)
    					
  9. Repita as etapas na seção Verify That It Works.

Solução de problemas

  • Quando você trabalha com dois idiomas, é fácil confunda sintaxe. Sintaxe de translation from VPE for Csharp Visual não permite uma ampla margem de erro. Além disso, mensagens de erro Visual translation from VPE for Csharp .NET nem sempre são como prompt ou tão intuitiva quanto mensagens de erro do Visual Basic. NET. Para solucionar esses problemas, consulte a seção "Equivalentes de idioma" do Microsoft .NET Framework Software Development Kit (SDK):
    Equivalentes do idioma
    http://msdn2.microsoft.com/en-us/library/czz35az4(vs.71).aspx
  • Se você desejar usar herança de implementação, estudar orientada a objeto princípios de design e considere arquitetura do aplicativo antecipadamente. Um erro comum é colocar código em um aplicativo principal que você precisa herdar em uma biblioteca de classe. Nesse cenário, você não pode herdar o aplicativo principal em uma biblioteca de classes devido a dependências circulares. Por exemplo, tente adicionar uma referência para o projeto de menu no projeto ClassLibrary1. Você receber a seguinte mensagem de erro:
    Uma referência a 'Menu' não pôde ser adicionada. Adicionar este projeto como uma referência causaria uma dependência circular.

REFERÊNCIAS

Para obter mais informações, consulte os seguintes sites da Microsoft:
Instintos básicos: Usando herança no. NET, parte 1
http://msdn.microsoft.com/en-us/magazine/cc135806.aspx

Instintos básicos: Usando herança no. NET, parte 2
http://msdn.microsoft.com/en-us/magazine/cc301744.aspx

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

Controle de servidor Web XML
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/gnconxmlwebservercontrol.asp

Ilhas de dados XML
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/comsrv2k/htm/cs_tp_bizdesk_nqok.asp

Propriedades

ID do artigo: 315903 - Última revisão: segunda-feira, 24 de fevereiro de 2014 - Revisão: 5.8
A informação contida neste artigo aplica-se 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
Palavras-chave: 
kbnosurvey kbarchive kbmt kbvs2005swept kbvs2005applies kbhowtomaster KB315903 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 315903

Submeter comentários

 

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