Início » ASP.NET

Arquivo da categoria: ASP.NET

Instalando Entity Framework via NuGet e PowerShell

Recentemente recebi várias dúvidas em relação à instalação do Entity Framework e, principalmente, como fazer um downgrade da versão do mesmo.

Podemos fazer a instalação do Entity Framework via NuGet. Quando essa é a opção escolhida, o gerenciador do NuGet instala a versão mais recente do Entity Framework. Porém, você pode se deparar com a situação de que seja necessário utilizar uma versão mais antiga do Entity Framework, por quaisquer circunstâncias. Neste caso, existe a opção de fazer a instalação da versão que for necessária para o seu uso, ou caso você faça a instalação da versão recente do Entity Framework e quer fazer um downgrade dessa versão, utilizar comandos PowerShell no Package Manager Console, no Visual Studio.

Para instalar o Entity Framework via NuGet:

  1. Abra algum projeto do Visual Studio.
  2. Clique com o botão direito em References – Manage NuGet Packages.
  3. Figura 1 - Instalando Entity Framework via NuGet e PowerShell

  4. Clique em Online – nuget.org e procure por EntityFramework. Clique no botão Install. Observe que do lado direito encontra-se a versão do Entity Framework que está sendo instalada.
  5. Figura 2 - Instalando Entity Framework via NuGet ou PowerShell

  6. Quando a caixa de diálogo abaixo for exibida, clique em I Accept. Essa caixa pergunta se você quer aceitar ou recusar o termo de licença para instalação do Entity Framework.
  7. Figura 3 - Instalando Entity Framework via NuGet e PowerShell

  8. Observe que, assim que o Entity Framework for instalado, um check verde aparecerá ao lado direito da caixa onde foi localizado o pacote do Entity Framework.
  9. Figura 4 - Instalando Entity Framework via NuGet e PowerShell

    Agora você tem instalado no seu projeto o Entity Framework com versão 6.1.0.

    Caso você queira fazer a instalação de uma versão anterior a atual no seu projeto, podemos usar comandos PowerShell para esse downgrade.

    Se o seu projeto já tiver alguma versão do Entity Framework instalada, desinstalaremos a mesma primeiramente.

  10. Clique no menu Tools – Library Package Manager – Package Manager Console.
  11. Figura 5 - Instalando Entity Framework via NuGet e PowerShell

  12. A janela do Package Manager Console será exibida. Para desinstalar o Entity Framework entre com o seguinte comando:
  13. Uninstall-package EntityFramework
    

    Nota: pode acontecer de você não conseguir desinstalar o Entity Framework por outras referências depender do mesmo.

  14. Para instalar o Entity Framework novamente, porém agora com uma versão anterior, entre com o seguinte comando:
  15. Install-Package EntityFramework -version 6.0.0
    

    Nota: o “6.0.0” é a versão que está sendo instalada no seu projeto.

    Figura 6 - Instalando Entity Framework via NuGet e PowerShell

    Se sua versão foi instalada corretamente, você terá a mensagem “Succesfully added ‘Entity Framework 6.0.0’ to WingtipToys.”.

Iniciando com ASP.NET 4.5 Web Forms – Parte 3 – Criando o DAL (Data Access Layer)

Esse tutorial descreve como criar, acessar, e revisar dados de uma base de dados usando ASP.NET Web Forms e Entity Framework Code First. É continuação do tutorial anterior “Criando o Projeto” e é parte da série de tutoriais Wingtip Toy Store. Quando você completar esse tutorial, terá construído um grupo de classes de acesso a dados que estão na pasta Models do projeto.

1 O que aprenderá:

  • Como criar o modelo de dados.
  • Como inicializar e alimentar a base de dados.
  • Como atualizar e configurar a aplicação para suportar a base de dados.

Essas são as características introduzidas no tutorial:

  • Entity Framework Code First
  • LocalDB
  • Data Annotations

2 Criando o Modelo de Dados

Entity Framework é um framework ORM (Object-Relational Mapping). Permite que você trabalhe com dados relacionais como objetos, eliminando a maioria de código de acesso a dados que você usualmente precisa escrever. Usando Entity Framework, você pode emitir consultas usando LINQ, e então recuperar e manipular dados como objetos fortemente tipados. LINQ fornece padrões para consulta e atualização de dados. Usar Entity Framework permite que você foque em criar o resto de sua aplicação, ao invés de focar nos fundamentos de acesso a dados. Posteriormente nesse tutorial, será mostrado como usar dados para popular navegação e consulta de produtos.

Entity Framework suporta um paradigma de desenvolvimento chamado Code First. Code First permite que você defina seus modelos de dados usando classes. Uma classe é um construtor que permite que você crie seus próprios tipos customizados agrupando variáveis de outros tipos, métodos e eventos. Você pode mapear classes para uma base de dados existente ou usá-las para gerar uma base de dados. Nesse tutorial, você criará o modelo de dados escrevendo classes de modelos de dados. E então, permitirá que o Entity Framework crie a base de dados dessas novas classes.

Começaremos criando entity classes que definem modelos de dadps para a aplicação Web Forms. Depois criará uma context class que gerencia as entity classes e fornece acesso a dados à base de dados. Criará também uma classe inicializadora que será usada para popular a base de dados.

2.1 Entity Framework e Referências

Por padrão, Entity Framework está incluso quando você cria uma nova aplicação ASP.NET usando o template Web Forms. Entity Framework pode ser instalado, desinstalado, e atualizado com o NuGet.

O pacote NuGet inclui os seguintes assemblies no seu projeto:

  • EntityFramework.dll – código usado pelo Entity Framework.
  • EntityFramework.SqlServer.dll – provider do Microsoft SQL Server para Entity Framework.

2.2 Entity Classes

As classes que você cria para definir o schema dos dados são chamadas entity classes. Se você é novo no design de base de dados, pense nas entity classes como definições de tabelas de uma base de dados. Cada propriedade na classe especifica uma coluna na tabela da base de dados. Essas classes fornecem uma estrutura leve, interface objeto-relacional entre código orientado a objeto e a estrutura relacional da tabela da base de dados.

Nesse tutorial, você começará adicionando uma entity class simples representando os schemas para produtos e categorias. A classe produtos conterá definições para cada produto. O nome de cada membro da classe produtos será ProductID, ProductName, Description, ImagePath, UnitPrice, CategoryID, e Category. A classe categoria conterá definições para cada categoria que um produto pode pertencer, como Car, Boat, ou Plane. O nome de cada membro da classe categoria será CategoryID, CategoryName, Description, e Products. Cada produto pertencerá a uma das categorias. Essas entity classes serão adicionadas a pasta existente no projeto chamado Models.

  1. Na Solution Explorer, clique com o botão direito na pasta Models e então selecione Add -> New Item.
  2. Figura 1 - Parte 3

    A caixa de diálogo Add New Item é exibida.

  3. Em Visual C# do painel Installed do lado esquerdo, selecione Code.
  4. Figura 2 - Parte 3

  5. Selecione Class no painel do centro e nomeie essa classe como Product.cs.
  6. Clique em Add. O novo arquivo da classe é exibido no editor.
  7. Substitua o código padrão pelo seguinte:
  8. using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.ComponentModel.DataAnnotations;
    
    namespace WingtipToys.Models
    {
    public class Product
    {
            [ScaffoldColumn(false)]
            public int ProductID { get; set; }
    
            [Required, StringLength(100), Display(Name = "Name")]
            public string ProductName { get; set; }
    
            [Required, StringLength(10000), Display(Name = "Product Description"), DataType(DataType.MultilineText)]
    
            public string Description { get; set; }
    
            public string ImagePath { get; set; }
    
            [Display(Name = "Price")]
            public double? UnitPrice { get; set; }
    
            public int? CategoryID { get; set; }
    
            public virtual Category Category { get; set; }
        }
    }
    
    
  9. Crie outra class repetindo os passos 1 até 4, entretanto, nomeie a nova classe como Category.cs e substitua o código padrão pelo seguinte:
  10. 
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.ComponentModel.DataAnnotations;
    
    namespace WingtipToys.Models
    {
        public class Category
        {
            [ScaffoldColumn(false)]
            public int CategoryID { get; set; }
    
            [Required, StringLength(100), Display(Name = "Name")]
            public string CategoryName { get; set; }
    
            [Display(Name = "Product Description")]
            public string Description { get; set; }
    
            public virtual ICollection<Product> Products { get; set; }
        }
    }
    
    

Como mencionado anteriormente, a classe Category representa o tipo de produto que a aplicação é projetada para vender (como Carros, Boats, Rockets, dentre outros), e a classe Product representa os produtos individuais (brinquedos) na base de dados. Cada instância de um objeto Product corresponderá a uma linha dentro de uma tabela de base de dados relacional, e cada propriedade da classe Product mapeará uma coluna na tabela de base de dados relacional. Posteriormente nesse tutorial, será revisado os dados dos produtos contidos na base de dados.

2.3 Data Annotations

Você deve ter notado que certos membros das classes tem atributos especificando detalhes sobre o membro, como ScaffoldColumn(false). Isso são data annotations. Os atributos data annotation podem descrever como validar entrada de usuário para aquele membro, especificar formatação para ele, e especificar como é modelado quando a base de dados é criada.

3 Context Class

Para começar usar as classes para acesso a dados, você deve definir uma context class. Como mencionado anteriormente, a context class gerencia as entity classes (como a classe Product e Category) e fornece acesso a dados para a base de dados.

Esse procedimento adicionada uma nova context class em C# para a pasta Models.

  1. Clique com o botão direito na pasta Models e então selecione Add -> New Item.
  2. Selecione Class do painel central, e nomeie como ProductContext.cs e clique em Add.
  3. Substitua o código padrão contido na classe pelo seguinte:
  4. using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Data.Entity;
    
    namespace WingtipToys.Models
    {
        public class ProductContext : DbContext
        {
            public ProductContext()
                : base("WingtipToys")
            { }
    
            public DbSet<Category> Categories { get; set; }
            public DbSet<Product> Products { get; set; }
        }
    }
    
    

Esse código adiciona o namespace System.Data.Entity para que você possa ter acesso ao core de todas as funcionalidades do Entity Framework, que inclui a capacidade de consultar, inserir, atualizar, e deletar dados trabalhando com objetos fortemente tipados.

A classe ProductContext representa o contexto da base de dados do Entity Framework, que manipula a busca, armazenamento, e atualização das instâncias da classe Product na base de dados. A classe ProductContext deriva da classe base DbContext fornecido pelo Entity Framework.

4 Classe Inicializadora

Será necessário executar alguma lógica customizada para inicializar a base de dados na primeira vez que o context é usado. Isso permitirá alimentar os dados a serem adicionados na base de dados para que você possa imediatamente exibir produtos e categorias.

Esse procedimento adiciona uma nova classe inicializadora em C# na pasta Models.

  1. Crie outra classe na pasta Models e nomeie como ProductDatabaseInitializer.cs.
  2. Substitua o código padrão contido na classe pelo seguinte:
  3. 
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Data.Entity;
    
    namespace WingtipToys.Models
    {
        public class ProductDatabaseInitializer : DropCreateDatabaseIfModelChanges<ProductContext>
        {
            protected override void Seed(ProductContext context)
            {
                GetCategories().ForEach(c => context.Categories.Add(c));
                GetProducts().ForEach(p => context.Products.Add(p));
            }
    
            private static List<Category> GetCategories()
            {
                var categories = new List<Category> {
                    new Category
                    {
                        CategoryID = 1,
                        CategoryName = "Cars"
                    },
                    new Category
                    {
                        CategoryID = 2,
                        CategoryName = "Planes"
                    },
                    new Category
                    {
                        CategoryID = 3,
                        CategoryName = "Trucks"
                    },
                    new Category
                    {
                        CategoryID = 4,
                        CategoryName = "Boats"
                    },
                    new Category
                    {
                        CategoryID = 5,
                        CategoryName = "Rockets"
                    }
                };
    
                return categories;
            }
    
            private static List<Product> GetProducts()
            {
                var products = new List<Product> {
                    new Product
                    {
                        ProductID = 1,
                        ProductName = "Convertible Car",
                        Description = "This convertible car is fast! The engine is powered by a neutrino based battery (not included)." + 
                                      "Power it up and let it go!", 
                        ImagePath="carconvert.png",
                        UnitPrice = 22.50,
                        CategoryID = 1
                   },
                    new Product 
                    {
                        ProductID = 2,
                        ProductName = "Old-time Car",
                        Description = "There's nothing old about this toy car, except it's looks. Compatible with other old toy cars.",
                        ImagePath="carearly.png",
                        UnitPrice = 15.95,
                         CategoryID = 1
                   },
                    new Product
                    {
                        ProductID = 3,
                        ProductName = "Fast Car",
                        Description = "Yes this car is fast, but it also floats in water.",
                        ImagePath="carfast.png",
                        UnitPrice = 32.99,
                        CategoryID = 1
                    },
                    new Product
                    {
                        ProductID = 4,
                        ProductName = "Super Fast Car",
                        Description = "Use this super fast car to entertain guests. Lights and doors work!",
                        ImagePath="carfaster.png",
                        UnitPrice = 8.95,
                        CategoryID = 1
                    },
                    new Product
                    {
                        ProductID = 5,
                        ProductName = "Old Style Racer",
                        Description = "This old style racer can fly (with user assistance). Gravity controls flight duration." + 
                                      "No batteries required.",
                        ImagePath="carracer.png",
                        UnitPrice = 34.95,
                        CategoryID = 1
                    },
                    new Product
                    {
                        ProductID = 6,
                        ProductName = "Ace Plane",
                        Description = "Authentic airplane toy. Features realistic color and details.",
                        ImagePath="planeace.png",
                        UnitPrice = 95.00,
                        CategoryID = 2
                    },
                    new Product
                    {
                        ProductID = 7,
                        ProductName = "Glider",
                        Description = "This fun glider is made from real balsa wood. Some assembly required.",
                        ImagePath="planeglider.png",
                        UnitPrice = 4.95,
                        CategoryID = 2
                    },
                    new Product
                    {
                        ProductID = 8,
                        ProductName = "Paper Plane",
                        Description = "This paper plane is like no other paper plane. Some folding required.",
                        ImagePath="planepaper.png",
                        UnitPrice = 2.95,
                        CategoryID = 2
                    },
                    new Product
                    {
                        ProductID = 9,
                        ProductName = "Propeller Plane",
                        Description = "Rubber band powered plane features two wheels.",
                        ImagePath="planeprop.png",
                        UnitPrice = 32.95,
                        CategoryID = 2
                    },
                    new Product
                    {
                        ProductID = 10,
                        ProductName = "Early Truck",
                        Description = "This toy truck has a real gas powered engine. Requires regular tune ups.",
                        ImagePath="truckearly.png",
                        UnitPrice = 15.00,
                        CategoryID = 3
                    },
                    new Product
                    {
                        ProductID = 11,
                        ProductName = "Fire Truck",
                        Description = "You will have endless fun with this one quarter sized fire truck.",
                        ImagePath="truckfire.png",
                        UnitPrice = 26.00,
                        CategoryID = 3
                    },
                    new Product
                    {
                        ProductID = 12,
                        ProductName = "Big Truck",
                        Description = "This fun toy truck can be used to tow other trucks that are not as big.",
                        ImagePath="truckbig.png",
                        UnitPrice = 29.00,
                        CategoryID = 3
                    },
                    new Product
                    {
                        ProductID = 13,
                        ProductName = "Big Ship",
                        Description = "Is it a boat or a ship. Let this floating vehicle decide by using its " + 
                                      "artifically intelligent computer brain!",
                        ImagePath="boatbig.png",
                        UnitPrice = 95.00,
                        CategoryID = 4
                    },
                    new Product
                    {
                        ProductID = 14,
                        ProductName = "Paper Boat",
                        Description = "Floating fun for all! This toy boat can be assembled in seconds. Floats for                   minutes!" + 
                                      "Some folding required.",
                        ImagePath="boatpaper.png",
                        UnitPrice = 4.95,
                        CategoryID = 4
                    },
                    new Product
                    {
                        ProductID = 15,
                        ProductName = "Sail Boat",
                        Description = "Put this fun toy sail boat in the water and let it go!",
                        ImagePath="boatsail.png",
                        UnitPrice = 42.95,
                        CategoryID = 4
                    },
                    new Product
                    {
                        ProductID = 16,
                        ProductName = "Rocket",
                        Description = "This fun rocket will travel up to a height of 200 feet.",
                        ImagePath="rocket.png",
                        UnitPrice = 122.95,
                        CategoryID = 5
                    }
                };
    
                return products;
            }
        }
    }
    
    

Como você pode ver no código acima, quando a base de dados é criada e inicializada, a propriedade Seed é substituída e definida. Quando a propriedade Seed é definida, os valores de categorias e produtos são usados para popular a base de dados. Se você tentar atualizar os dados alimentados modificando o código acima depois que a base de dados for criada, você não verá nenhuma atualização quando executar a aplicação Web. A razão é que o código acima usa uma implementação da classe DropCreateDatabaseIfModelChanges para reconhecer se o model foi alterado antes de resetar os dados alimentados. Se nenhuma alteração for feita às entity classes Category e Product, a base de dados não será reinicializada com os dados alimentados.

Nota: se você quisesse que a base de dados fosse recriada toda hora que a aplicação for executada, poderia usar a classe DropCreateDatabaseAlways ao invés da classe DropCreateDatabaseIfModelChanges. Entretanto para essa série de tutoriais, use a classe DropCreateDatabaseIfModelChanges.

Nesse ponto do tutorial, você terá uma pasta Models com quatro novas classes e uma classe padrão:

Figura 3 - Parte 3

5 Configurando a Aplicação para usar Data Model

Agora que você criou as classes que representam os dados, deve-se configurar a aplicação para usar as classes. No arquivo Global.asax, você adiciona código para inicializar o model. No arquivo Web.config você adiciona informação que diz a aplicação qual base de dados será usada para armazenar os dados que são representados pelas novas classes de dados. O arquivo Global.asax pode ser usado para manipular eventos ou métodos da aplicação. O arquivo Web.config permite que você controle a configuração de sua aplicação Web.

5.1 Atualizando o arquivo Global.asax

Para inicializar os data models quando a aplicação executar, você atualizará o manipulador Application_Start no arquivo Global.asax.

Nota: na Solution Explorer, você pode selecionar o arquivo Global.asax ou Global.asax.cs para editar o arquivo Global.asax.cs.

  1. Adicione o seguinte código no método Application_Start no arquivo Global.asax.cs.
  2. 
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Optimization;
    using System.Web.Routing;
    using System.Web.Security;
    using System.Web.SessionState;
    using System.Data.Entity;
    using WingtipToys.Models;
    
    namespace WingtipToys
    {
        public class Global : HttpApplication
        {
            void Application_Start(object sender, EventArgs e)
            {
                // Code that runs on application startup
                RouteConfig.RegisterRoutes(RouteTable.Routes);
                BundleConfig.RegisterBundles(BundleTable.Bundles);
    
                //Initialize the product database.
                Database.SetInitializer(new ProductDatabaseInitializer());
            }
        }
    }
    
    

Como mostrado no código acima, quando a aplicação iniciar, a aplicação especifica o inicializador que irá executar durante a primeira vez que o dado é acessado. Os namespaces adicionais (using System.Data.Entity e WingtipToys.Models) são necessários para acessar o objeto Database e o objeto ProductDatabaseInitializer.

5.2 Modificando o arquivo Web.config

Embora o Entity Framework Code First gerará uma base de dados para você num local padrão quando a base de dados é populada com dados, adicionar sua própria informação de conexão na sua aplicação te dá controle a localização da base de dados. Você especifica essa conexão da base de dados usando uma connection string no arquivo Web.config da aplicação na raíz do projeto. Adicionando uma nova connection string, você pode direcionar a localização da base de dados (wingtiptoys.mdf) para ser construída no diretório de dados da aplicação (App_Data), em vez de sua localização padrão. Fazer essa mudança permite que você encontre e inspecione posteriormente o arquivo da base de dados nesse tutorial.

  1. Na Solution Explorer, encontre e abra o arquivo Web.config.
  2. Adicione a connection string abaixo na seção do arquivo Web.config, como segue:
  3. 
    <connectionStrings>
        <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-WingtipToys-20140407092028.mdf;Initial Catalog=aspnet-WingtipToys-20140407092028;Integrated Security=True" providerName="System.Data.SqlClient" />
        <add name="WingtipToys" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\wingtiptoys.mdf;Integrated Security=True" providerName="System.Data.SqlClient" />
      </connectionStrings>
    
    

Quando a aplicação for executada pela primeira vez, construirá a base de dados no local especificado pela connection string. Mas antes de executar a aplicação, vamos fazer o build da mesma.

6 Buildando a Aplicação

Para garantir que todas as classes e alterações da sua aplicação Web funcionaram, você deve buildar a aplicação.

  1. No menu Debug, selecione Build WingtipToys. A janela Output é exibida, e se tudo correu bem, você verá uma mensagem de sucesso.

Figura 4 - Parte 3

Se sua execução der erro, cheque os passos anteriores. A informação na janela Output indicará quais arquivos tem um problema e onde no arquivo uma mudança e requerida. Essa informação permitirá que você determine qual parte dos passos anteriores precisam ser revisados e corrigidos no seu projeto.

Sumário

Nesse tutorial você criou o modelo de dados, assim como, adicionou o código que será usado para inicializar e alimentar a base de dados. Você também configurou a aplicação para usar o modelo de dados quando a aplicação é executada.

No próximo tutorial, você atualizará a Interface de Usuário, adicionar navegação, e recuperar os dados da base de dados. Isso resultará na base de dados sendo automaticamente criada baseada em entity classes que você criou nesse tutorial.


O conteúdo desta página resulta da tradução do artigo Getting Started with ASP.NET 4.5 Web Forms – Create the Data Access Layer, escrito pelo autor Erik Reitan, originalmente presente no site do asp.net. A página correspondente pode ser conferida aqui.

Iniciando com ASP.NET Web Forms 4.5 – Parte 2 – Criando o Projeto

Nesse tutorial você irá criar, revisar, e executar o projeto padrão no Visual Studio, que permitirá que se familiarize com as características do ASP.NET. Também irá revisar o ambiente do Visual Studio.

1 O que aprenderá:

  • Como criar um novo projeto Web Forms.
  • A estrutura de arquivos do projeto Web Forms.
  • Como executar o projeto em Visual Studio.
  • As diferentes características da aplicação padrão Web Forms.
  • Alguns conceitos básicos de como usar o ambiente do Visual Studio.

2 Criando o Projeto

  1. Abra o Visual Studio.
  2. Selecione New Project do menu File no Visual Studio.
  3. Figura 1 - Parte 2

  4. Selecione Templates  Visual C#  Web do grupo de templates do lado esquerdo.
  5. Escolha o template ASP.NET Web Application na coluna do meio.
  6. Nomeie seu projeto como WingtipToys e clique no botão OK.
  7. Figura 2 - Parte 2

    Nota: o nome do projeto nesse tutorial é WingtipToys. É recomendado que você use exatamente o mesmo nome de projeto para que o código fornecido através do tutorial funcione como esperado.

  8. Selecione o template Web Forms e clique no botão Create Project.
  9. Figura 3 - Parta 3

Levará um tempo até que o projeto seja criado. Quando estiver pronto, abra a página Default.aspx.

Figura 4 - Parte 2

Você pode mudar entre Design e Source view selecionando uma opção no fundo da janela do centro. Design view exibe páginas ASP.NET, master pages, páginas de conteúdo, páginas HTML, e controle de usuário usando a visão WYSIWYG (What You See Is What You Get). Source view exibe a marcação HTML para sua página web, que você pode editar.

3 Entendendo o ASP.NET Framework

ASP.NET Web Forms te permite construir websites dinâmicos usando o modelo familiar drag-and-drop e event-driven. A superfície do design e milhares de controles e componentes te permite criar rapidamente sofisticado, poderosa interface gráfica com acesso a dados. A loja Wingtip Toy é baseada no ASP.NET Web Forms, mas muitos dos conceitos que você aprenderá nessa série de tutoriais são aplicáveis a todo ASP.NET.

ASP.NET oferece quatro frameworks de desenvolvimento primários:

  • ASP.NET Web Forms
    O framework Web Forms é o alvo dos desenvolvedores que preferem programação declarativa e baseada em controles, assim como Microsoft Windows Forms (WinForms) e WPF/XAML/Silverlight. Oferece um WYSIWYG modelo de desenvolvimento de design, então é popular com desenvolvedores olhando para um rápido ambiente de desenvolvimento de aplicação (RAD) para desenvolvimento web. Se você é novo em programação web e familiar com as tradicionais ferramentas de desenvolvimento cliente RAD (por exemplo, para Visual Basic e Visual C#), você pode rapidamente construir uma aplicação web sem ter experiência em HTML e JavaScript.

  • ASP.NET MVC
    ASP.NET MVC é o alvo para desenvolvedores que estão interessados em padrões e princípios como desenvolvimento de teste dirigido, separação de interesses, inversão de controle (IoC), e injeção de dependências (DI). Esse framework encoraja separação da BLL (Business Logic Layer – Camada de Regra de Negócios) de uma aplicação web da sua camada de apresentação.

  • ASP.NET Web Pages
    ASP.NET Web Pages é o alvo para desenvolvedores que querem um desenvolvimento web simples, ao longo de linhas do PHP. No modelo Web Pages, você cria páginas HTML e então adiciona código baseado em servidor a fim de controlar dinamicamente como a marcação é renderizada. Web Pages é especificamente desenhada para ser um framework leve, e é o ponto de entrada mais fácil para o ASP.NET para pessoas que conhecem HTML mas não tem experiência em programação – por exemplo, estudantes ou hobbistas. É também uma boa maneira para desenvolvedores web que sabem PHP ou frameworks similares para começar usar ASP.NET.

  • ASP.NET Single Page Application
    ASP.NET Single Page Application (SPA) te ajuda a construir aplicações que incluem interações cliente-side significantes usando HTML5, CSS3 e JavaScript. O ASP.NET e Web Tools 2012.2 Update envia um novo template para construir aplicações single page usando knockout.js e ASP.NET Web API. Em adição ao novo template SPA, novos templates SPA criados pela comunidade também estão disponíveis para download.

Em adição aos quatro principais frameworks de desenvolvimento, ASP.NET também oferece tecnologias adicionais que são importantes estar cientes e familiarizados, mas não são cobertos nessa série de tutoriais:

  • ASP.NET Web API – um framework para construção de serviços HTTP que alcançam uma ampla gama de clientes, incluindo navegadores e mobile devices.
  • ASP.NET SignalR – uma biblioteca que torna o desenvolvimento web em tempo real fácil.

4 Revisando o Projeto

No Visual Studio, a janela Solution Explorer permite que você gerencie arquivos para o projeto. Vamos dar uma olhada nas pastas que foram adicionadas na sua aplicação na Solution Explorer. O template web application adiciona uma estrutura básica de pastas:

Figura 5 - Parte 2

Visual Studio cria alguns pastas e arquivos iniciais para seu projeto. Os primeiros arquivos que você trabalhará posteriormente no tutorial são os seguintes:

Arquivo Propósito
Default.aspx Tipicamente a primeira página exibida quando a aplicação é executada no navegador.
Site.Master Uma página que permite que você crie um layout consistente e use comportamento padrão nas páginas de sua aplicação.
Global.asax Um arquivo opcional que contém código para responder eventos appication-level e session-level levantados pelo ASP.NET ou pelos módulos HTTP.
Web.config Dados de configuração para uma aplicação.

5 Executando a Aplicação Web Padrão

A aplicação Web padrão fornece uma experiência rica baseada em suporte e funcionalidade embutidos. Sem nenhuma mudança no projeto padrão Web Forms, a aplicação está pronta para ser executada no seu navegador Web local.

  1. Aperte a tecla F5 enquanto estiver no Visual Studio. A aplicação será compilada e exibida no seu navegador Web.
  2. Figura 6 - Parte 2

  3. Quando você tiver completado a revisão da aplicação em execução, feche a janela do navegador.

Existem três páginas principais nessa aplicação Web: Default.aspx (Home), About.aspx e Contact.aspx. Cada uma dessas páginas podem ser obtidas pela barra de navegação. Existem também duas páginas adicionais contidas na pasta Account, as páginas Register.aspx e Login.aspx. Essas duas páginas permitem que você use o membership do ASP.NET para criar, armazenar, e validar credenciais de usuário.

6 ASP.NET Web Forms Background

ASP.NET Web Forms são páginas que são baseadas nas tecnologias Microsoft ASP.NET, em que cada código que executa no servidor dinamicamente gera saída de uma página Web no browser ou dispositivo client. Uma página ASP.NET Web Forms automaticamente renderiza o navegador compatível correto com HTML para características como estilos, layout, dentre outros. Web Forms são compatíveis com qualquer linguagem suportada pelo CLR (Common Language Runtime), assim como Microsoft Visual Basic e Microsoft Visual C#. Também, Web Forms são construídas no Microsoft .NET Framework, que fornece benefícios tanto como um ambiente gerenciado, tipo de segurança e herança.

Quando uma página ASP.NET Web Forms é executada, a página vai através de um ciclo de vida em que executa uma série de etapas de processamento. Essas etapas incluem inicialização, controles de instanciação, restauração e manutenção de estado, executando código de manipulação de eventos, e renderizando. Assim que você tornar mais familiarizado com o poder do ASP.NET Web Forms, é importante para você entender o ciclo de vida da página para que assim você possa escrever código no estágio apropriado de ciclo de vida para o efeito que você pretender.

Quando um web server recebe uma requisição de uma página, ele encontra a página, processa, envia para o navegador, e então desfaz toda a informação da página. Se o usuário requisitar a mesma página novamente, o servidor repete toda a sequencia, reprocessando a página a partir do zero. Dito de outra forma, um servidor não possui nenhuma memória de páginas que foram processadas – páginas são sem estado. O framework de uma página ASP.NET automaticamente manipula as tarefas de manutenção do estado de sua página e seus controles, e fornece a você caminhos explícitos para manter o estado de informação de sua específica aplicação.

6.1 Características de uma Aplicação Web nos templates de uma Aplicação Web Forms

Um template de Aplicação ASP.NET Web Forms fornece um rico conjunto de funcionalidades de construção. Não somente fornece a você com uma página Home.aspx, About.aspx, Contact.aspx, mas também inclui funções de membros que registra usuários e salva suas credenciais assim eles podem fazer login no seu website. Essa visão geral fornece mais informação sobre algumas das características contidas no template ASP.NET Web Forms Application e como eles são usados na aplicação Wingtip Toys.

6.2 Memberships

ASP.NET Identity armazena as credenciais dos seus usuários numa base de dados criada pela aplicação. Quando seus usuários fazem o login, a aplicação valida suas credenciais lendo a base de dados.
A pasta Account do seu projeto contém os arquivos que implementam as várias partes do membership (membros): registrando, logando, trocando uma senha, e autorizando acesso. Adicionalmente, ASP.NET Web Forms suporta OAuth e OpenID. Essas melhorias de autenticação permite aos usuários logar dentro do seu site usando credenciais existentes, de várias contas como Facebook, Twitter, Windows Live and Google.

Figura 7 - Parte 2

Por padrão, o template cria uma base de dados de membros usando um nome padrão de base de dados numa instância do SQL Server Express LocalDB, o servidor da base de dados de desenvolvimento que vem com Visual Studio 2013 Express for Web.

6.3 SQL Server Express LocalDB

SQL Server Express LocalDB é uma versão leve do SQL Server que tem muitas características de programabilidade da base de dados do SQL Server. SQL Server Express LocalDB executa em modo usuário e tem uma instalação rápida e sem configuração que tem uma pequena lista de pré-requisitos para instalação. No Microsoft SQL Server, qualquer base de dados ou código T-SQL pode ser movido do SQL Server Express LocalDB para SQL Server e SQL Azure sem nenhum passo de upgrade. Então, SQL Server Express LocalDB pode ser usado como um ambiente de desenvolvimento para alvo de aplicações de todas as edições do SQL Server.

SQL Server Express LocalDB habilita características como stored procedures, funções definidas de usuário e agregados, integração com .NET Framework, tipos especiais e outros que não estão disponíveis no SQL Server Compact.

6.4 Master Pages

Uma ASP.NET master page define uma aparência consistente e comportamento para todas as páginas de sua aplicação. O layout da master page funde com o conteúdo de uma página de conteúdo individual para produzir a página final que o usuário vê. Na aplicação Wingtip Toys, você modifica a master page Site.master para que assim todas as páginas no website Wingtip Toys compartilhem o mesmo logo e barra de navegação.

6.5 HTML5

O template ASP.NET Web Forms Application suporta HTML5, que é a última versão da linguagem de marcação HTML. HTML5 suporta novos elementos e funcionalidades que torna mais fácil criar Web sites.

6.6 Modernizr

Para navegadores que não suportam HTML5, você pode usar o Modernizr. Modernizr é uma biblioteca JavaScript que pode detectar se um navegador suporta as características do HTML5, e habilita caso contrário. No template ASP.NET Web Forms Application, Modernizr é instalado como um pacote NuGet.

6.7 NuGet Packages

O template ASP.NET Web Forms Application inclui um conjunto de pacotes NuGet. Esses pacotes fornecem funcionalidades de componentes no formulário de ferramentas e bibliotecas open source. Há uma ampla variedade de pacotes para ajudar você criar e testar suas aplicações. O Visual Studio torna fácil adicionar, remover, e atualizar pacotes NuGet. Desenvolvedores podem criar e adicionar pacotes ao NuGet como quiserem.

Figura 8 - Parte 2

Quando você instala um pacote, NuGet copia arquivos para sua solução e automaticamente faz quaisquer mudanças que são necessárias, assim como adiciona referencias e troca seu arquivo Web.config. Se você decidir remover a biblioteca, NuGet remove arquivos e inverte quaisquer mudanças que foram feitas em seu projeto de modo que não cause nenhuma desordem. NuGet está disponível no menu Tools no Visual Studio.

6.8 jQuery

jQuery é uma rápida e concisa biblioteca JavaScript que simplifica documentos HTML, manipulação de eventos, animação, e interações Ajax para rápido desenvolvimento web. A biblioteca jQuery do JavaScript está inclusa no template ASP.NET Web Forms Application como um pacote NuGet.

6.9 Unobtrusive Validation

Controles de validação embutidos tem sido configurados para usar JavaScript discretamente para validação de lógica do lado cliente. Isso reduz significantemente a quantidade de JavaScript renderizando inline na marcação da página e reduz o tamanho global da página. Validação discreta é adicionada globalmente ao template ASP.NET Web Forms Application baseado na configuração do elemento do arquivo Web.config na raíz da aplicação.

6.10 Entity Framework Code First

Além das características do template ASP.NET Web Forms Application, a aplicação Wingtip Toys usa Entity Framework Code First, que é uma biblioteca NuGet que habilita o desenvolvimento de código centrado quando você trabalha com dados. Simplificando, ele cria uma parte da base de dados de sua aplicação para você baseado no código que você escreve. Usando o Entity Framework, você recupera e manipula dados como objetos fortemente tipados. Isso permite que você foque na regra de negócio de sua aplicação em vez dos detalhes de como o dado é acessado.

7 Tour pelo Visual Studio

A janela primária no Visual Studio inclui a Solution Explorer, o Server Explorer (Database Explorer no Express), a Properties Window, o Toolbox, a Toolbar, e o Document Window.

Figura 9 - Parte 2

Sumário

Nesse tutorial você criou, revisou e executou a aplicação padrão do Web Forms. Você revisou as diferentes características da aplicação padrão do Web Forms e aprendeu alguns conceitos básicos sobre como usar o ambiente do Visual Studio. Nos próximos tutoriais você irá criar o DAL (Data Access Layer – Camada de Acesso a Dados).


O conteúdo desta página resulta da tradução do artigo Create the Project, escrito pelo autor Erik Reitan, originalmente presente no site do asp.net. A página correspondente pode ser conferida aqui.

Iniciando com ASP.NET Web Forms 4.5 e Visual Studio 2013 – Parte 1 – Introdução e Visão Geral

1 Introdução

Essa série de tutoriais guia você através de passos requeridos para criar uma aplicação em ASP.NET Web Forms usando Visual Studio Express 2013 e ASP.NET 4.5.

A aplicação que você criará se chama Wingtip Toys. É um exemplo simples de uma loja online que vende itens online. A série de tutoriais destaca novas características disponíveis no ASP.NET 4.5.

1.1 Download do projeto completo

Você pode fazer o download do projeto em C# que contém o tutorial completo.

1.2 Revise o conteúdo respondendo o ASP.NET Web Forms Quiz

Depois que você completar o tutorial, teste seu conhecimento e reforce conceitos chaves respondendo o ASP.NET Web Forms Quiz. Esse Quiz foi especialmente criado do conteúdo contido nessa série de tutoriais. Cada questão no quiz fornece uma explicação sobre os links com guia adicional.

1.3 Público-alvo

O público-alvo desta série de tutoriais são desenvolvedores experientes que são novos no ASP.NET Web Forms. O desenvolvedor interessado nessa série de tutoriais deve ter os seguintes skills (habilidades):

  • Familiar com alguma linguagem de programação orientada a objeto.
  • Familiar com conceitos de desenvolvimento Web (HTML, CSS, JavaScript).
  • Familiar com conceitos relacionais da base de dados.
  • Familiar com conceitos de arquitetura em camadas.

1.4 Características da Aplicação

As características do ASP.NET Web Forms apresentadas nesta série inclui:

  • O Web Application Project (não Web Site Project)
  • Web Forms
  • Master Pages, configuração
  • Bootstrap
  • Entity Framework Code First, LocalDB
  • Request Validation
  • Data Controls fortemente tipados, Model Binding, Data Annotations, e Value Providers
  • OAuth e OpenID
  • ASP.NET Identity, Configuração e Autorização
  • Unobtrusive Validation (Validação Discreta)
  • Routing
  • ASP.NET Error Handling

1.5 Cenários de Aplicação e Tarefas

Tarefas demonstradas nessa série inclui:

  • Criando, revisando e rodando o novo projeto.
  • Criando a estrutura da base de dados.
  • Inicializando e povoando a base de dados.
  • Customizando User Interface usando estilos, gráficos e master page.
  • Adicionando páginas e navegação.
  • Exibindo detalhes do menu e dados do produto.
  • Criando um carrinho de compras.
  • Adicionando suporte OpenID.
  • Adicionando método de pagamento.
  • Incluindo uma regra de administrador e um usuário a aplicação.
  • Restringindo acesso a páginas e pastas específicas.
  • Carregando um arquivo para a aplicação web.
  • Implementando validação de input (entrada).
  • Registrando rotas para a aplicação web.
  • Implementando error handling e error logging.

2 Visão Geral

Se você é novo com ASP.NET Web Forms mas tem familiaridade com conceitos de programação, você está no tutorial correto. Se você já é familiarizado com ASP.NET Web Forms, você pode se beneficiar através desta série de tutoriais das novas características do ASP.NET 4.5. Se você não possui familiaridade com conceitos de programação e ASP.NET Web Forms, veja Getting Started no ASP.NET Web Site.

As últimas características especificadas fornecidas nessa série de tutoriais incluem o seguinte:

  • Uma simples interface de usuário para criar projetos que oferecem suporte para múltiplos ASP.NET frameworks (Web Forms, MVC e Web API).
  • Boostrap, um layout e framework para tema que fornece design responsivo e capacidades de tema.
  • ASP.NET Identity, um novo sistema de ASP.NET membership que trabalha da mesma forma em todos frameworks ASP.NET e trabalha com web hosting exceto IIS.
  • Entity Framework 6, uma atualização do Entity Framework que permite que você recupere e manipule dados como objetos fortemente tipados, acesso a dados assíncronos, manipular falhas de conexão transitórios, e log de SQL.

2.1 A Aplicação Wingtip Toys

Os screenshots a seguir fornecem uma rápida visão da aplicação em ASP.NET Web forms que você criará nesta série de tutoriais. Quando você executa a aplicação no Visual Studio Express 2013 para Web, você verá a Home Page a seguir.

Wingtip Toys [1]

Você pode se registrar como um novo usuário, ou logar como um usuário existente. A navegação é fornecida no topo para cada categoria de produto recuperando os produtos disponíveis da base de dados.

Selecionando o link Products (Produtos), você será capaz de ver uma lista de produtos disponíveis.

Wingtip Toys [2]

Você pode também ver detalhes dos produtos individuais selecionando qualquer um dos produtos listados.

Wingtip Toys [3]

Como um usuário, você pode registrar e fazer login utilizando funcionalidades padrões do modelo de Web Forms. Também, esse tutorial explica como fazer login usando uma conta do Gmail existente. Adicionalmente, você pode fazer login como administrador para adicionar e remover produtos da base de dados.

Wingtip Toys [4]

Uma vez que você esteja logado, você pode adicionar produtos ao carrinho de compras e pagar com PayPal. Note que essa aplicação é desenvolvida para funcionar com PayPal sandbox. Nenhuma transação atual com dinheiro terá lugar.

Wingtip Toys [5]

PayPal confirmará sua conta, encomenda, e informação de pagamento.

Wingtip Toys [6]

Depois de retornar do PayPal, você pode revisar e completar sua encomenda.

Wingtip Toys [7]

3 Pré-requisitos

Antes de começar, certifique-se de que você tenha os seguintes softwares instalados no seu computador:

  • Microsoft Visual Studio 2013 ou Microsoft Visual Studio Express 2013 para Web. O .NET Framework é instalado automaticamente.

Esta série de tutoriais utiliza Microsoft Visual Studio 2013 para Web. Você pode também utilizar Microsoft Visual Studio 2013 Express para Web ou Microsoft Visual Studio 2013 para completar a série de tutoriais.

4 Download da Aplicação

Depois de instalar os pré-requisitos, você está pronto para começar a criar o novo projeto Web que é apresentado nesta série de tutoriais. Se você quer executar a amostra da aplicação que esse tutorial cria, você poderá fazer download do site MSDN Samples. Esse download contém:

  • A Amostra da Aplicação na pasta Wingtip Toys.
  • Os recursos usados para criar a amostra da aplicação na pasta WingtipToys-Assets na pasta WingtipToys.

4.1 Faça o download do arquivo no site do MSDN Samples

Getting Started with ASP.NET 4.5 Web Forms and Visual Studio 2013 – Wingtip Toys (C#)

O download é um arquivo .zip. Para ver o projeto completo que essa série de tutoriais cria, encontre e selecione a pasta C# no arquivo .zip. Salve a pasta C# para a pasta que você usará para trabalhar com projetos do Visual Studio 2013. Por padrão, os projetos do Visual Studio 2013 se localizam na seguinte pasta:

C:\Users\\Documents\Visual Studio 2013\Projects

Renomeie a pasta C# para WingtipToys.

Para executar o projeto completo, abra a pasta WingtipToys e dê um duplo-clique no arquivo WingtipToys.sln. Visual Studio 2013 abrirá o projeto. Depois, dê um clique com o botão direito no arquivo Default.aspx na janela da Solution Explorer e clique em View In Browser no menu mostrado após o clique com o botão direito.


O conteúdo desta página resulta da tradução do artigo Getting Started with ASP.NET 4.5 Web Forms – Introduction and Overview, escrito pelo autor Erik Reitan, originalmente presente no site do asp.net. A página correspondente pode ser conferida aqui.

Fazendo upload de um projeto de Web Site no Windows Azure através do Visual Studio 2012

Neste artigo será demonstrado como fazer upload de um projeto de Web Site no Windows Azure através do Visual Studio 2012. Vale ressaltar que, esse processo através do Visual Studio 2012 veio para facilitar a vida dos desenvolvedores, pois o mesmo feito no Visual Studio 2010 não trabalha de forma tão integrada.

Para desenvolver esse post será utilizado:

– Visual Studio Express 2012 para Web

– Conta do Windows Azure: a mesma pode ser criada através do seu Live ID no site https://www.windowsazure.com/pt-br/. O serviço oferece uma versão trial de 90 dias.

O primeiro passo é criar uma conta do Azure, caso você ainda não tenha criado. Acesse o portal de gerenciamento, onde você terá possibilidades de configuração e controle dos aplicativos e serviços do Windows Azure.

Criaremos um projeto de Web Site somente para exemplificar o processo de upload.

Abra o Visual Studio Express 2012 for Web e clique em File – New Project – Visual C# – ASP.NET Web Forms Application. O projeto será nomeado como DemoAzure. Clique em OK para salvar o projeto.

Projeto criado, voltaremos ao portal de gerenciamento do Windows Azure e criaremos um Web Site no mesmo.

Clique na opção New, na parte inferior da página.

Agora, clique em COMPUTE – WEB SITE – QUICK CREATE e insira um nome para o domínio. No exemplo, criei como demoazure. Não há necessidade de alteração da opção region.

Clique em Create Web Site.

Uma mensagem será mostrada se o seu Web Site no Azure foi criado com sucesso e, observe que, na parte superior da página, tem-se uma grid com o Name, Status, Subscription, Location, Mode e URL do Web Site.

Clique na opção referente ao Web Site que você acabou de criar, e seremos levados ao dashboard do mesmo.

O próximo passo é fazer o download do publish profile. No caso, o nome do download do meu arquivo é demoazure.azurewebsites.net.PublishSettings.

Volte ao seu projeto no Visual Studio, clique no menu Build – Publish DemoAzure.

Uma nova janela será aberta, onde, primeiramente, deve-se importar o publish profile que fora feito o download.

Automaticamente, o Visual Studio preenche os campos necessários para a publicação do projeto de Web Site na sua conta do Windows Azure.

Clique em Publish.

Observe que na janela de Output do Visual Studio é mostrado todo o processo de upload dos arquivos do projeto.

Assim que o processo é completado, o browser abre o seu Web Site, já publicado no Windows Azure, com o domínio escolhido na etapa de criação do mesmo no portal de gerenciamento.

No caso do exemplo o domínio é http://demoazure.azurewebsites.net/.

Pronto. Agora o Web Site já está publicado no Windows Azure através do Visual Studio 2012 e online.

Menus em ASP.NET

Para entendermos como trabalhar com menus em ASP.NET, vamos continuar a partir do post Usando master page.

Havíamos criado em layout.Master três ContentPlaceHolder e criado default.aspx para ser nossa página principal, lembrando que o mesmo herda o estilo de layout.Master. Vamos criar o menu dentro de cphLeftNavigation, dentro de nosso default.aspx.

Temos três modos de visualização do nosso trabalho: Design, Split e Source. Clique no modo Design. Agora, na Toolbox, localize a aba Navigation e a opção Menu. Arraste o mesmo para dentro de cphLeftNavigation, que é o ContentPlaceHolder criado para inserção dos menus.

Selecione o seu menu e abra o Menu Tasks:

Em Auto Format definimos o formato automático que nosso menu deverá ter. Escolha um do seu agrado. Agora clique em Edit Menu Items e o Menu Item Editor aparecerá, que é onde devemos editar os itens de nosso menu. No botão Add a root item, insira três itens. Eles virão com o nome de New Item. Ao lado, em Properties, temos a opção Text e Value. Renomeie seus itens de menu e seus valores, de acordo com as figuras, e aperte enter ao finalizar:

Clique em OK. Veja como deve ficar:

Vamos criar mais uma página .aspx que será para o cadastro de clientes, usando a Master Page criada no nosso projeto. Na Solution Explorer, clique com o botão direito e Add / New Item. Escolha Web Form Using Master Page, renomeie para cadCliente.aspx e clique no botão Add. Aparecerá uma tela para selecionar a Master Page que deverá ser usada. Clique em layout.Master e então, Ok. Por enquanto, não iremos trabalhar com cadCliente.aspx. Ficará para o próximo post.

Agora, vamos linkar cada item de menu as suas páginas referentes. Selecione o menu e abra o Menu Tasks. Clique em Edit Menu Items e observe, em propriedades, a opção NavigateURL.

Para o item HOME vamos selecionar a página default.aspx; para o item CLIENTES a página cadCliente.aspx e, para o item MAIORES INFORMACOES coloque um site qualquer. Clique em OK.

Veja como o código do seu menu deverá ficar:

<asp:Menu ID="Menu1" runat="server" BackColor="#F7F6F3" DynamicHorizontalOffset="2" Font-Names="Verdana" Font-Size="0.8em" 
                        ForeColor="#7C6F57" StaticSubMenuIndent="10px">
            <DynamicHoverStyle BackColor="#7C6F57" ForeColor="White" />
            <DynamicMenuItemStyle HorizontalPadding="5px" VerticalPadding="2px" />
            <DynamicMenuStyle BackColor="#F7F6F3" />
            <DynamicSelectedStyle BackColor="#5D7B9D" />
                <Items>
                    <asp:MenuItem Text="Home" Value="0" NavigateUrl="~/Default.aspx"></asp:MenuItem>
                    <asp:MenuItem Text="Clientes" Value="1" NavigateUrl="~/cadCliente.aspx"></asp:MenuItem>
                    <asp:MenuItem Text="Maiores informações" Value="2" 
                        NavigateUrl="http://www.msdn.com.br"></asp:MenuItem>
                </Items>
            <StaticHoverStyle BackColor="#7C6F57" ForeColor="White" />
            <StaticMenuItemStyle HorizontalPadding="5px" VerticalPadding="2px" />
            <StaticSelectedStyle BackColor="#5D7B9D" />
     </asp:Menu>

Copie o código referente ao menu e cole dentro do cphLeftNavigation da página cadCliente.aspx. Execute o projeto e teste seu menu.

Bons estudos!

Andrielle Azevedo de Paula
MTAC – Microsoft Technical Audience Contributor

Usando MASTER PAGE

Neste artigo vamos aprender como criar uma master page para armazenar o layout das páginas. Abra o Visual Studio, e vamos criar um novo projeto web; na barra de menus, clique em FILE / NEW / PROJECT.

A seguinte tela aparecerá:

Em Installed Templates selecione Visual C# / Web / ASP.NET Empty Web Application. Nomeie como projetoCliente, selecione onde quer salvar seu projeto em Location e clique em OK. No momento que você pressionar OK, seu projetoCliente será criado.

Agora, vamos adicionar um novo item ao nosso projeto. Começaremos criando uma MASTER PAGE.

Uma MASTER PAGE é um arquivo ASP.NET com extensão .master que possui um layout pré-definido e pode incluir texto estático, elementos de HTML e server controls, e pode ser usada em várias páginas .aspx.

Clique com o botão direito no seu projetoCliente, em Solution Explorer; logo ADD / NEW ITEM.

A seguinte janela aparecerá:

Selecione a opção MASTER PAGE e dê o nome de LAYOUT.MASTER. Confirme clicando em ADD.

Criado o layout.master, vamos criar agora uma Style Sheet, que é uma folha de estilo onde podemos trabalhar com CSS. No nosso LAYOUT.MASTER vamos criar div’s, referenciados através de ID da folha de estilo.

Clique, na Solution Explorer, no projetoCliente com botão direito e ADD / NEW ITEM. Escolha a opção Style Sheet e renomeie para estilo.css. Confirme clicando em ADD.

Na sua folha de estilos, entre com os códigos a seguir para definir as div’s.

#container
{
    width: 673px;
    border-width: 1px;
    border-color:Black;
    border-style: solid;
    margin: 0px auto;
}

#header
{
    color: #FFFFFF;
    width: 221px;
    height: 100px;
    background-color: #8B8970;
}

#sidePanel
{
    width: 213px;
    height: 372px;
    margin-top: 5px;
    background-color: #8B8970;
    color: #FFFFFF;
    padding: 4px;
}

#content
{
    width: 446px;
    float: right;
    height: 380px;
    margin-top: 5px;
    background-color: #CDC9A5;
}

#footer
{
    background-color: #EEE9BF;
    padding: 12px;
    width: 649px;
    color: #000000;
    font-size: 90%;
    text-align: center;
    clear: both;
    border-top: 5px;
    border-style: solid;
    border-color: #FFFFFF;
}

Na Solution Explorer, observe os arquivos que temos:

Abra o SOURCE da página LAYOUT.MASTER. Clique no ESTILO.CSS dentro da Solution Explorer e arraste entre as tags. Veja o código:

<head runat="server">
    <link href="estilo.css" rel="stylesheet" type="text/css" />
    <title>Aprendendo a trabalhar com MASTER PAGE</title>
</head>

Ao arrastar, é criado automaticamente o link para a sua folha de estilo, onde estão definidas o estilo das div’s.

Ainda no LAYOUT.MASTER vamos chamar as div’s entre as tags. Observe o código:

<body>
    <form id="form1" runat="server">
        <div id="container">
            <div id="header">
                <h5>Nome da Aplicação Web</h5>
            </div>
            <div id="content">
                <asp:ContentPlaceHolder ID="cphContent" runat="server" />
            </div>        
            <div id="sidePanel">
                <asp:ContentPlaceHolder ID="cphLeftNavigation" runat="server" />
            </div>
            <div id="footer">
                <p>Conteúdo do Rodapé</p>
                <asp:ContentPlaceHolder ID="cphFooter" runat="server" />
            </div>
        </div>
    </form>
</body>

Agora, vamos criar uma página aspx utilizando a master page. Na Solution Explorer, clique em ADD / NEW ITEM. Selecione Web Form using Master Page e renomeie para DEFAULT.ASPX. Confirme clicando em ADD.

Esta Web Form criada usa a Master Page existente em nosso projeto. Portanto, quaisquer mudanças deverão ser feitas na master page. Execute o projeto para visualizar a estrutura do seu projeto web.

Para concluir, segue tabela de cores para trabalhar com estilos.

Fonte de referência: http://macoratti.net

Bons estudos!

Andrielle Azevedo de Paula
MTAC – Microsoft Technical Audience Contributor