COMO: Serializar Web Server Controls by Using Visual translation from VPE for Csharp .NET

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: 328547
Sumário
Este artigo passo a passo descreve como serializar a propriedade de itens de um controle de servidor de Web ListBox do ASP.NET .

Quando você desenvolver um ASP.NET aplicativo, você pode querer armazenar propriedades de um controle de servidor Web para um dispositivo de armazenamento persistente. Criando classes personalizadas que ampliam a funcionalidade da biblioteca de controles de Web do ASP.NET padrão, você pode serializar propriedades públicas de um controle de servidor da Web.

back to the top

  • Microsoft .NET framework
  • Microsoft Windows 2000 ou Microsoft Windows XP
  • Microsoft (IIS) 5.0 ou posterior
back to the top

Esta seção descreve como criar uma classe que pode serializar e desserializar a propriedade de itens do controle de servidor de Web ListBox (controle System.Web.UI.WebControls.ListBox ):
  1. Inicie o Microsoft Visual Studio NET..
  2. No menu arquivo , clique em novo e, em seguida, clique em Project .
  3. Em Project Types , selecione projetos translation from VPE for Csharp Visual . Em modelos , selecione Class Library .
  4. Nome do projeto SerializableControls e, em seguida, clique em OK . Por padrão, um arquivo de classe (Class1.cs) é criado e adicionado ao projeto.
  5. Adicione uma referência para System.Web.dll . Para fazer isso, execute as seguintes etapas:
    1. No menu projeto no IDE do Visual Studio .NET, clique em Add Reference .
    2. Na guia .NET , localizar System.Web.dll e, em seguida, clique em Selecionar .
    3. Clique em OK na Adicionar referências caixa de diálogo para aceitar as seleções. Se você receber uma solicitação para gerar wrappers para as bibliotecas que você selecionou, clique em Sim .
  6. Renomeie o arquivo de classe de Class1.cs para SerialListBox.cs. Para fazer isso, clique com o botão direito do mouse Class1.cs no Solution Explorer e, em seguida, clique em Renomear . Digite SerialListBox.cs e, em seguida, pressione ENTER.
  7. No arquivo SerialListBox.cs, substitua o código existente com:
    using System;using System.Runtime.Serialization;using System.Web.UI.WebControls;namespace SerializableControls{    [Serializable]    public class SerialListBox : System.Web.UI.WebControls.ListBox , System.Runtime.Serialization.ISerializable    {        public SerialListBox()         {        }        // Deserialization constructor        public SerialListBox(SerializationInfo info, StreamingContext context)        {            string strItem;            string strValue;            // Obtain the list of item keys.            string itemList = info.GetString("ItemList");            string [] items = itemList.Split(new Char[] {';'});            // Create a new list item for each key in the ItemList.            for(int nCount = 0; nCount < (items.Length - 1); nCount++)            // use (items.Length - 1) due to terminating ';' delimiter             {                // list item Text property                strItem = items[nCount];  				                // list item Value property                strValue = info.GetString("Item-Value-" + strItem);                 this.Items.Add(new System.Web.UI.WebControls.ListItem(strItem, strValue));            }        }        // Serialization function (see ISerializable)        public void GetObjectData(SerializationInfo info, StreamingContext context)        {            string itemList = "";            foreach(ListItem item in this.Items)            {                // Add a ';' delimited list of item keys using the Text property of the item.                itemList += item.Text + ";";                // Add a Key/Value pair to the SerializationInfo object.                // Use the "Item-Value-<KEY>" format to distingush item-value properties                // from other properties stored in the SerializationInfo object.                info.AddValue("Item-Value-" + item.Text, item.Value);            }            info.AddValue("ItemList", itemList);        }    }}					
  8. No menu Build , clique em Build Solution para criar a solução. Como alternativa, pressionar CTRL + SHIFT + B.
back to the top

  1. No Microsoft Visual Studio. NET, clique em novo no menu arquivo e, em seguida, clique em Project .
  2. Em projetos , selecione translation from VPE for Csharp Visual projetos . Em modelos , selecione ASP.NET Application .
  3. Na caixa Location , substitua o nome padrão com SerializationTest . Se você estiver usando o servidor local, você pode deixar o nome do servidor como http://localhost. A caixa local resultante aparece da seguinte maneira:
    http://localhost/SerializationTest
    Por padrão, o arquivo de WebForm1.aspx é criado e adicionado para o projeto.
  4. Adicione uma referência à biblioteca de classe SerializableControls. Para fazer isso, execute as seguintes etapas:
    1. No menu Project no Visual Studio .NET Integrated Development ambiente (IDE), clique em Add Reference .
    2. Na guia .NET , selecione Procurar .
    3. Na caixa de diálogo Abrir , localize o arquivo SerializableControls.dll , clique em Abrir e, em seguida, clique em OK .

      Observação : arquivo de SerializableControls.dll O estará localizado na Lixeira pasta sob a pasta de projeto para o projeto de biblioteca de classe que você acaba de criar.
  5. No canto inferior esquerdo do designer de formulário da Web, clique em HTML para alternar para o modo de exibição HTML para WebForm1.aspx. Substitua o código existente com:
    <%@ Register TagPrefix="cc1" Namespace="SerializableControls" Assembly="SerializableControls" %><%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="SerializationTest.WebForm1" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" ><HTML>    <HEAD>        <title>WebForm1</title>        <meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">        <meta name="CODE_LANGUAGE" Content="C#">        <meta name="vs_defaultClientScript" content="JavaScript">        <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">    </HEAD>    <body MS_POSITIONING="GridLayout">        <form id="Form1" method="post" runat="server">            <cc1:SerialListBox id="lstSerListBox" style="Z-INDEX: 101; LEFT: 85px; POSITION: absolute; TOP: 23px"            runat="server" Width="172px" Height="121px" EnableViewState="False" AutoPostBack="True">                <asp:ListItem Value="1">First Item</asp:ListItem>                <asp:ListItem Value="2">Second Item</asp:ListItem>                <asp:ListItem Value="3">Third Item</asp:ListItem>            </cc1:SerialListBox>            <asp:Button id="btnLoad" style="Z-INDEX: 105; LEFT: 17px; POSITION: absolute; TOP: 111px"            runat="server" Text="Load"></asp:Button>            <asp:Button id="btnSave" style="Z-INDEX: 103; LEFT: 16px; POSITION: absolute; TOP: 26px"             runat="server" Text="Save"></asp:Button>            <asp:Label id="lblValue" style="Z-INDEX: 106; LEFT: 270px; POSITION: absolute; TOP: 25px"             runat="server" Width="68px" Height="22px">Value: </asp:Label>        </form>    </body></HTML>					
    Observação : quando você colar código na janela do HTML, cole os segmentos de código como HTML. Para fazer isso, selecione Colar como HTML no menu Editar .

    Este código faz o seguinte:

    • Adiciona um controle de servidor Web Button ao formulário da Web. A identificação do controle é definida como btnLoad e a propriedade Text é definida para carregar .
    • Adiciona um controle de servidor Web Button ao formulário da Web. A identificação do controle é definida como btnSave e a propriedade Text é definida para Salvar .
    • Adiciona um controle Label ao formulário da Web.
    • Adiciona o controle personalizado SerialListBox com três itens de lista. A identificação é definida como lstSerListBox . Para usar este controle, você deve adicionar uma referência à parte superior da página da Web. Isso define o espaço para nome e a marca é usada no HTML.
  6. No canto inferior esquerdo da IDE, clique em Design para alternar para o modo de design de WebForm1.aspx. Clique duas vezes em btnSave . Isso inicia o manipulador de eventos btnSave_Click() no código - behind Visual .NET translation from VPE for Csharp arquivo (WebForm1.aspx.cs). Substitua o código existente com o seguinte:
    private void btnSave_Click(object sender, System.EventArgs e){    Stream stream = new FileStream(@"c:\Test\MyListBox.bin",   FileMode.Create, FileAccess.Write, FileShare.None);    // Serialize the object, and close the TextWriter.    BinaryFormatter formatter = new BinaryFormatter();    formatter.Serialize(stream, lstSerListBox);    stream.Close();    // Clear all SerialListBox items.    lstSerListBox.Items.Clear();    lblValue.Text = "";}					
    Observação : nesse código, C:\Test é uma pasta que você deve criar. Esta pasta contém o arquivo que tem as propriedades do controle de servidor Web. Certifique-se que esta pasta possui permissões de gravação para a conta que o ASP.NET código está sendo executado. Por padrão, aplicativos ASP.NET na versão 1.0 do .NET Framework executados sob a conta ASPNET.
  7. No Solution Explorer, clique com o botão direito no arquivo WebForm1.aspx e, em seguida, clique em View Designer para voltar ao modo de design para o arquivo WebForm1.aspx. No modo de exibição Design, clique duas vezes no botão btnLoad . Isso abre o código de Visual .NET translation from VPE for Csharp btnLoad_Click() manipulador de eventos. Substitua o código existente com o código a seguir:
    private void btnLoad_Click(object sender, System.EventArgs e){    // Open the FileStream to read from.    Stream stream = File.OpenRead(@"C:\Test\MyListBox.bin");    // Deserialize the object, and close the TextReader.    BinaryFormatter formatter = new BinaryFormatter();    lstSerListBox = (SerializableControls.SerialListBox)(formatter.Deserialize(stream));    stream.Close();}					
  8. Alterne novamente para o modo de Design WebForm1.aspx e, em seguida, clique duas vezes o controle de caixa de lista lstSerListBox . Isso abre o código de Visual .NET translation from VPE for Csharp lstSerListBox_SelectedIndexChanged() manipulador de eventos. Substitua o código existente com o seguinte:
    private void lstSerListBox_SelectedIndexChanged(object sender, System.EventArgs e){    lblValue.Text = "Value: " + lstSerListBox.SelectedItem.Value.ToString();}					
  9. No arquivo WebForm1.aspx.cs, adicione o código a seguir na parte superior do arquivo para importar esses namespaces:
    using System.IO;using System.Runtime.Serialization;using System.Runtime.Serialization.Formatters.Binary;					
  10. No menu Build , clique em Build Solution para criar a solução. Como alternativa, pressionar CTRL + SHIFT + B.
back to the top

Testar o formulário da Web

  1. No Solution Explorer, clique com o botão direito no arquivo WebForm1.aspx e, em seguida, clique em View in Browser .
  2. Quando você vir uma página de formulários da Web que contém um botão Load , um botão Salvar , uma caixa de listagem e um rótulo, clique em qualquer item na caixa de listagem. O controle de rótulo exibe o valor do item de caixa de listagem selecionada.
  3. Clique em Salvar . O conteúdo da caixa de listagem é serializado e salvo no disco. O conteúdo da caixa de listagem desaparece.
  4. Clique em carregar . Os dados serializados é leitura do disco e um novo controle ListBox é instanciado com os dados serializados. O conteúdo da caixa de listagem é restaurado para o estado anterior.
back to the top
Referências
Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
306459INFO: ASP.NET Server Controls Overview
Para obter mais informações sobre como salvar as propriedades de controles, visite o seguinte site da Web Microsoft Developer Network (MSDN):back to the top

Aviso: este artigo foi traduzido automaticamente

Proprietăți

ID articol: 328547 - Ultima examinare: 03/29/2007 10:05:17 - Revizie: 2.5

Microsoft ASP.NET 1.1, Microsoft ASP.NET 1.0, Microsoft Visual C# .NET 2003 Standard Edition, Microsoft Visual C# .NET 2002 Standard Edition

  • kbmt kbhowtomaster kbservercontrols KB328547 KbMtpt
Feedback