Arquivos da categoria: VisualStudio 2010

Habilitando suporte para HTML 5 no VisualStudio 2010

Para habilitar suporte para HTML 5 no VisualStudio 2010 é necessário instalar o Service Pack 1, disponível em

http://www.microsoft.com/download/en/details.aspx?id=23691.

Após sua instalação, abra o Visual Studio e no menu TOOLS > OPTIONS, e selecione grupo HTML Editor selecionando o item VALIDATION, marcando o TARGET como HTML5.

Ao criar um novo arquivo o intelisense mostra as novas tags do HTML 5.

Enquanto ainda não decoramos as novas implementações do HTML 5, é possível facilmente fazer sua validação por meio da barra HTML Sourcing Editing de validação do VS.

Agora é só brincar.

O poder de usar Visões Parciais (partial views) com JQuery

Estou tentando aprender como criar página Web usando o Pattnern MVC 3 que acompanha o VisualStudio 2010. E hoje aprendi algo que me fascinou (pois no ASP.NET tradicional não é tão simples), invocar WebUserControls em chamadas AJAX. Vamos lá.

Uma Partial View é uma espécie de WebUserControl do MVC, ou seja, é possível criar pedaços de código a serem reaproveitados posteriormente em outras páginas.

Com o MVC é possível invocar via chamadas AJAX (neste caso com JQuery) Partial Views, ou seja, de forma simples posso via Ajax trazer o conteúdo da View que está no servidor.

A primeira coisa é criar a referência para biblioteca JQuery numa View normal ou MasterPage. E depois criar a Partial View e seu respectivo Action Controller.

Partial View OutroCurso.ascx:


<table cellpadding="0" cellspacing="0" style="width: 608px">
    <tr>
        <td style="width: 288px">
            Se sim, qual curso?<br />
            <%:Html.TextBox("txtQualCurso", "", new { maxlength = "10", style = "width:264px" })%>
        </td>
        <td>
            Em qual instituição?<br />
            <%:Html.TextBox("txtQualInstituicao", "", new { maxlength = "10", style = "width:264px" })%>
        </td>
    </tr>
</table>

Action Controller da Partial View OutroCurso.ascx:


public ActionResult OutroCurso()
{
    return PartialView();
}

E por fim, falta fazer a chamada AJAX para a Partial View acima dentro de uma View normal ou MasterPage.

A ideia do código abaixo é que o usuário ao selecionar o radiobutton SIM, apareçam outros campos a serem preenchidos (a Partial View). Observe que cada radionbutton em seu evento onclick chama a função JavaScript loadPartialViewOutroCurso, responsável por usar o método Load disponível na biblioteca JQuery para invocar a Partial View no servidor.

Possui outro curso superior?<br />
<%:Html.RadioButton("rblOutroCurso", "N", false, new { onclick = "loadPartialViewOutroCurso('N')" })%> Não
<%:Html.RadioButton("rblOutroCurso", "S", false, new { onclick = "loadPartialViewOutroCurso('S')" })%> Sim
<div id="divOutroCurso"></div>

<script type="text/javascript">

    function loadPartialViewOutroCurso(opcao) {

        if (opcao == 'S')
            $('#divOutroCurso').load('/Solicitacao/OutroCurso');
        else $('#divOutroCurso').html("");
    }

</script>

A URL a “/Solicitacao/OutroCurso” é a rota para o Action (OutroCurso) do Controller (Solicitacao) que mantém a Partial View.

Bom né?

Abraço e até a minha próxima descoberta no mundo MVC.

Crystal Report – Exemplo

 

Olá Pessoal.

Deixo aqui o video feito pelo meu aluno André Crivilin (aluno de Sistemas para Internet). Ele filmou a tela do computador quando acompanhava minha aula para construir um simples relatórios com o Crystal Report + Visual Studio 2010.

Valeu André Crivilin….

Até mais.

Verificando se o navegador suporta/habilita cookies

Olá galera.

Algumas vezes precisamos trabalhar com cookies em nossas aplicações Web. Uma das desvantagens em seu uso, é que o usuário pode ter desabilitado o seu suporte no navegador.

Para não deixar o usuário sem saber motivo de não conseguir usar o site, é importante checar se o navegador está com o suporte a cookies habilitado. Este teste é simples. Basta criar uma cookie e enviá-la ao cliente, e depois recuperá-la no servidor. Se for possível sua recuperação, então o navegador está com suporte a cookies habilitado.

Exemplo:

protected void Page_Load(object sender, EventArgs e)
{

    if (this.SuportaCookies())
        Response.Write("Seu navegador não suporta ou está com o recurso de cookies desabilito.");
}

private bool SuportaCookies()
{
    string urlAtual = Request.RawUrl;

    if (Request.QueryString["cookieCheck"] == null)
    {
        try
        {
            HttpCookie c = new HttpCookie("SuportaCookies", "true");
            Response.Cookies.Add(c);

            if (urlAtual.IndexOf("?") > 0)
                urlAtual += "&";
            else
                urlAtual += "?";

            urlAtual += "cookieCheck=true";

            Response.Redirect(urlAtual);
        }
        catch
        {
        }
    }

    if (!Request.Browser.Cookies || Request.Cookies["SuportaCookies"] == null)
        return true;

    return false;
}

No exemplo, o uso da propriedade Request.Browser.Cookies é para verificar se o navegador dá suporte a cookies, e não para chegar se o recurso está habilitado. Não sei se existe ainda navegadores que não dão tal suporte, mas na dúvida é bom verificar. Então o método criado no exemplo server para as duas coisas: verificar o suporte e se está habilitado o uso.

No Internet Explorer não funcionou enquanto o teste era local (no desenvolvimento), ou seja, só funcionou depois da publicação no servidor. No Firefox funcionou nos dois ambientes.

E é isso. Até mais.

Mantendo o estado em páginas ASP.NET

Protocolo HTTP é um protocolo que não armazena informações entre suas requisições e resposta (stateless).

Não há implementações no protocolo HTTP que requisite que o browser identifique a si mesmo em cada requisição. Também não há nenhuma conexão estabelecida entre o browser e o servidor que persista entre uma página e a próxima, ou entre requisições para a mesma página, ou seja, o servidor envia os dados requisitados pelo cliente e não armazena nenhuma informação de estado. Se o cliente solicita a mesma informação, mesmo em um período de tempo pequeno, o servidor envia novamente sem nenhum critério.

Em qualquer desenvolvimento de sistemas Web pode ser aplicado técnicas de persistência de informações entre as requisições do usuário, como session e cookie. Além desta duas formas, no ASP.NET é possível usar um novo recurso chamado de VIEWSTATE.

Session

  • São informações armazenadas no servidor web para cada usuário de um determinado site;
  • Cada usuário possui suas próprias variáveis de sessão;
  • São destruídas ao fechar o navegador, ou no seu timeout, ou ainda quando solicitado pela aplicação;
  • As variáveis de sessões são globais dentro da sessão do usuário (qualquer página do servidor Web pode acessá-las).

Armazenando

Session.Add("INFORMACAO","Valor a ser armazenado");

Recuperando

if (Session["INFORMACAO"] != null) //testando a existência da session
    string x = Session["INFORMACAO"].ToString();

É importante testar a existência da session antes de tentar recuperar seu valor. Caso ela não exista, é disparado um erro ao tentar recuperar o valor.

Destruindo

Session.Remove("INFORMACAO");

Cookie

  • Trata-se de um pequeno arquivo de texto que é armazenado na máquina do usuário;
  • Cada site possui suas próprias cookies no computador do usuário;
  • Usado, por exemplo, em sites de comércio eletrônico, para exibir as  preferências e características do usuário;
  • São destruídas ao fechar o navegador, ou quando seu tempo de vida expira, ou ainda quando solicitado pela aplicação;
  • Pode identificar o usuário mesmo dias depois de seu acesso a página;
  • O grande problema dos cookies é que o usuário simplesmente pode desabilitar este recurso em seu navegador.

Armazenando

HttpCookie cookie = new HttpCookie("INFORMACAO");
cookie.Value = "Valor a ser armazenado";

//Envia a cookie ao cliente
Response.Cookies.Add(cookie);

É possível manipular o tempo de vida da cookie no cliente. No exemplo abaixo a cookie tem um tempo de vida de 7 dias.

cookie.Expires = DateTime.Now.AddDays(7);

//Envia a cookie ao cliente
Response.Cookies.Add(cookie);

Recuperando

if (Request.Cookies["INFORMACAO"] != null)
{
    string x = Request.Cookies["INFORMACAO"].Value;
}

É importante testar a existência da cookie antes de tentar recuperar seu valor. Caso ela não exista, é disparado um erro ao tentar recuperar o valor.

Destruindo
Para destruir a cookie é necessário definir um tempo de vida menor que o atual. Depois é só enviá-la ao cliente.

if (Request.Cookies["INFORMACAO"] != null)
{
    HttpCookie cookie = Request.Cookies["INFORMACAO"];
    cookie.Expires = DateTime.Now.AddDays(-1);

    //Envia a cookie ao cliente
    Response.Cookies.Add(cookie);
}

Para confirmar a operação criação/definição de valores e destruição da cookie é requerido seu envio ao browser cliente. Observe nos exemplos acima o uso do Response.Cookie.Add para enviá-la ao cliente.

ViewState

  • Mantêm automaticamente os valores de controles de servidor entre um postback e outro;
  • Internamente funciona como um campo oculto (hidden) um pouco mais sofisticado (__VIEWSTATE);
  • O ViewState é mantido somente na página, ao sair da página ele é perdido;
  • Ao rodar uma aplicação ASP.NET sem qualquer controle verá que é criado um campo oculto para o armazenamento do ViewState;
  • Os dados não são exibidos em texto plano, por questões de segurança;
  •  Pode-se ainda adicionar manualmente valores a um ViewState.

Armazenando

ViewState.Add("INFORMACAO","Valor a ser armazenado");

Recuperando

if (ViewState["INFORMACAO"] != null) //testando a existência do viewstate
    string x = ViewState["INFORMACAO"].ToString();

É importante testar a existência do viewstate antes de tentar recuperar seu valor. Caso ele não exista, é disparado um erro ao tentar recuperar o valor.

Destruindo

ViewState.Remove("INFORMACAO");

Até o próximo post.

Microsoft: Licenças de produtos gratuitas

Para os profissionais de desenvolvimento, a Microsoft oference versões Express dos produtos: Visual Studio, SQL Server, e Visual Studio LightSwitch.

E ainda para estudantes, Web Developers ou empreendedores de Startups, a Microsoft disponibiliza não só licenças gratuitas como também programas com benefícios específicos para atender às suas necessidades.

DreamSpark WebSite Spark BizSpark Express – Grátis
Público Estudantes Web developers e Web designers
Empreendedores (com foco nos
desenvolvedores de soluções Software as a Service (SaaS).
Qualquer publico.
Produtos Disponíveis para Download • Visual Studio,
• SQL Server
2008,
• Windows Server 2008 R2,
• Expression,
• XNA Game Studio,
• Robotics Developer Studio 2008 R2,
• Virtual PC e muitos outros
• Visual Studio Professional, •
Expression (Studio e Web), • SQL Server 2008 Web Edition e Web Server R2, •
Windows Web Server 2008 R2
• Mais de 300 softwares em diferentes
versões
• Visual Studio • SQL ServerV •
Visual Studio LightSwitch
Pré-requisitos Ser estudante de uma instituição
cadastrada no programa, incluindo a ISIC (Carteira Mundial do Estudante), a
Conta Universitária Bradesco entre outras ou pertencer a uma instituição que
tenha Live@Edu.
Desenvolver soluções de
desenvolvimento web e/ou design Company  (até 10 pessoas) ou Individual.
A empresa deve ter menos de 3 anos de
vida, ser da iniciativa privada e ter receita anual menor que 1M USD.
Nenhum
Outros benefícios
do programa
Disponibiliza uma série de
treinamentos em português e inglês, para complementar a sua formação.
Participação no programa por até 3
anos,
Visibilidade, Networking e Suporte.
Download da versão do produto
gratuito, sem data de expiração
Link para o
programa
DreamSpark WebSite
Spark
BizSpark

Visual Studio
SQL Server

Instalando o SQL Server Management Studio

Este tutorial é indicado para quem possui o SQL Server 2008 SP1 Express ou R2 Express instalado e ainda não tem uma ferramenta para administração de banco de dados. Também é aplicável ao SQL Server que acompanha o VisualStudio 2010.

A Microsoft oferece uma ótima ferramenta para administração de bases de dados do SQL Server, o SQL Server Management Studio, que pode ser baixada em http://www.microsoft.com/sqlserver/en/us/editions/express.aspx, nos itens Download 2008 R2 32-BIT Database w/Tools (para plataforma 32 bits) ou Download 2008 R2 64-BIT Database w/Tools (para plataforma 64 bits). Na página de download selecione o idioma desejado.

Essa instalação do SSME vem integrada com a instalação do SQL Server Express R2, então durante a instalação será desabilitada a instalação da instância do SQL Server 2008 R2 Express, pois conforme citado acima, o tutorial se aplica para quem já possui uma instalação do SQL Server 2008 SP1 ou R2.

Após executar o arquivo de instalação abrirá a tela abaixo, no menu selecione o item [Instalação], e nele a opção [Nova instalação ou adicionar recursos a uma instalação existente].

Na nova tela concorde com os Termos de Licença e avance. E na tela de Seleção de Recursos, o item [Serviços de Mecanismo de Banco de Dados] deve ficar desmarcado, pois o computador já possui o SQL Server instalado e só queremos habilitar suporte ao SQL Server Management Studio.

Na próxima etapa não marque a opção de envio de relatório de erros, e avance.

E na próxima tela é aguardar a instalação.

E se tudo deu certo, a tela abaixo aparecerá concluindo a instalação do SSME. Reinicie o computador conforme solicitado.


Inicie o SSME pelo menu Iniciar.

A tela [Conectar ao Servidor] requer algumas informações sobre a instância do SQL Server que se pretende conectar. No campo [Nome do Servidor] é necessário indicar o caminho para chegar até a instância e o nome da instância. O caminho pode ser o IP de algum computador ou mesmo o computador local (localhost). O caractere . (ponto) equivale ao mesmo que digitar localhost (computador local). E por fim, o nome da instância, que neste é exemplo é  “SQLExpress”.

A autenticação deve ser selecionada conforme configurado na instalação da instância do SQL Server.

Depois de conectado é possível ver as bases de dados da instância SQLExpress, criar novas bases, administrar as existentes, criar tabelas, editar tabelas, desenvolver storeds procedure e trigger, fazer backup, gerar scripts, e muito mais. Seja curioso!


Uma última dica. O ambiente oferece um ótimo editor gráfico para administrar as tabelas. Ele está no item [Diagramas de Banco de Dados] na árvore da base de dados que se está administrando. No menu de contexto (botão direito do mouse) tem a opção de criar um novo diagrama e selecionar as tabelas da base.

Por questões de segurança para não deixar você estragar a base de dados, o diagrama não permite salvar todo tipo de alteração. Ciente disso, você pode desativar essa proteção no menu Ferramentas, opções, designer, designers de tabelas do banco de dados, desmarque a opção [Evitar salvar alterações que exijam recriação de tabela].

Espero ter ajudado. Até o próximo.

Definindo classes em C# – Parte 1

Olá pessoal.

A ideia deste post não é mostrar o conceito de classe (ou mesmo da Orientação a Objetos), e sim como criar classes na linguagem C#.

Numa aplicação desenvolvida com uma linguagem orientada a objetos o uso de classe é bem comum. Mesmo aplicações pequenas em C# necessitam da elaboração de uma ou mais classes, cada uma com suas propriedades e métodos usados para executar as tarefas relativas ao objeto.

Mas o que é uma classe? Uma classe pode ser definida como um gabarito de um objeto. Acho que agora piorou, certo?

Primeiro vamos entender o que é um objeto. Um objeto na programação OO é qualquer coisa que seja um único item que se queira identificar num programa, como por exemplo uma pessoa, um carro, um computador, uma caneta, um usuário, etc. Mas o que seria a classe? A classe define como esse objeto deve ser, por isso é um gabarito de um objeto.

A classe gera o objeto de acordo com sua estrutura, e esse processo de criação do objeto é chamado de instanciação da classe.

Em C#, podemos ter dentro de uma classe os seguintes membros: atributos, construtores, destrutores, domínios, métodos, propriedades, indexadores, delegates, eventos e classe aninhadas. As classes são declaradas usando a palavra reservada class e precedida de um modificador de acesso, conforme mostrado no exemplo a seguir

public class Pessoa
{
}

Os modificadores de acesso dizem ao compilador da linguagem como classe será acessada externamente. Os moficadores são para classe são:

public: Permite que a classe seja acessada por qualquer outra classe.
selead: Não permite que a classe seja herdada.
partial: Permite que a classe tenha seu escopo dividido em vários arquivos.
static: Especifica que a classe somente tem membros estáticos. Não pode ser instanciada.
abstract: Define moldes para classes filhas. Não pode ser instanciada.

Atributos, Métodos, Propriedades e Construtores

Atributos

Atributo são declarados dentro da classe e são os elementos que definem sua estrutura. São como variáveis da classe.

public class Pessoa
{
    int _id;
    string _nome;
    DateTime _dataNascimento;
}

Métodos

Os métodos são as ações que a classe ou uma instância da classe realização. A declaração de um método contempla um modificador de acesso, um tipo de retorno, o nome do método e opcionalmente parâmetros.

public class Pessoa
{
    int _id;
    string _nome;
    DateTime _dataNascimento;

    public int CalcularIdade()
    {
        int idade = DateTime.Now.Year - this._dataNascimento.Year;
        return (idade);
    }

    public int CalcularIdade(DateTime dataReferencia)
    {
        int idade = dataReferencia.Year - this._dataNascimento.Year;
        return (idade);
    }
}

É possível ter métodos com o mesmos nomes, sendo suas assinaturas diferentes, isso é chamado de sobrecarga de métodos. E ainda é possível criar métodos que não tenham um retorno específico usando a palavra reservada void.

protected void FazAlgumaCoisa()
{
    //Faz alguma coisa e não retorna...
}

Um método é classificado em “Contexto de Ação”, quando é centrado nos processos e atividades realizadas. Ex.: impressão de um cabeçalho padrão, mudança de configuração de tela, mudança de um status, etc. Normalmente não possuem retorno. É classificado como “Contexto de Resultado”, quando o objetivo é calcular ou obter algum valor em especial. Ex.: validação, resultado de um cálculo, etc. Normalmente retorna um valor.

Propriedades

Algumas linguagens de programação implementam o conceito Propriedades em suas características de Orientação a Objetos. Alguns puristas não concordam com uso, pois alegam que fere alguns conceitos tradicionais da OO.

A linguagem C# promove o uso de Propriedades, que são métodos que protegem (encapsulam) o acesso a membros da classe, ou seja, separa os elementos visíveis de um objeto dos invisíveis. As propriedades podem ser substituidas pelo clássico uso dos métodos set e get.

public class Pessoa
{
    int _id;

    public int Id
    {
        get { return _id; }
        set { _id = value; }
    }

    string _nome;

    public string Nome
    {
        get { return _nome; }
        set { _nome = value; }
    }

    DateTime _dataNascimento;

    public DateTime DataNascimento
    {
        get { return _dataNascimento; }
        set { _dataNascimento = value; }
    }
}

Na classe acima todos atributos foram encapsulados por propriedades, por exemplo o atributo int _id foi encapsulado pela propriedade public int Id. A propriedade Id poderia ter sido substituída sem problemas por um método set e get.

int _id;

public int GetId
{
    return _id;
}

public int SetId
{
    _id = value;
}

Modificações de acesso para atributos, métodos e propriedades

Atributos, métodos e propriedades necessitam de moficadores de acesso. Os principais para estes recursos são:

Public: Permite que os membros das classes sejam acessados por qualquer outro escopo
Protected: Permite que membros sejam usados apenas pela classe que o contém e permite que estes sejam “herdados” para classes derivadas da original.
Private: O membro é de uso exclusivo da classe onde é declarado.
Internal: Permite acesso somente por classes do mesmo assemblie.
Static: Permite acesso, sem necessidade do objeto ser instanciado.
Abstract: São métodos de classes Abstract que não possuem implementação (sem codificação).
Virtual: Permite que os métodos sejam sobrescritos por classes filhas.
Readonly:Limita acesso a somente leitura aos atributos da classe

Construtores

As classes podem apresentar métodos de inicialização chamados de construtores. São métodos responsáveis por inicializar os objetos das classes (instâncias das classes). E são identificados por um método com o mesmo nome da classe e sem retorno.

public class Pessoa
{
    public Pessoa()
    {

    }

    public Pessoa(int id, string nome, DateTime dataNascimento)
    {
        _id = id;
        _nome = nome;
        _dataNascimento = dataNascimento;

    }
    ...

Acima foram criados dois construtores, o primeiro não faz nada (construtor padrão) e o segundo recebendo valores para inicializar os atributos da classe.

Instanciando classes

A instanciação da classe ocorre através da palavra reservada new. Se uma classe é estática (static) ela tem um comportamente diferente, não sendo necessário fazer sua instanciação para uso.

Pessoa pessoa1 = new Pessoa();
Pessoa pessoa2 = new Pessoa(1,"Filogonio Silva",dataNasc);
Pessoa pessoa3 = new Pessoa(2,"Fippildo Silva",dataNasc);

Existe outros conceitos (mais avançados) envolvendo classes. Aqui é só um “aquece”.

Até mais.

Ferramentas de desenvolvimento

Ambientes de desenvolvimento oficiais

Microsoft Visual Studio .NET – é considerado pela Microsoft, o seu principal ambiente de desenvolvimento, suportando a criação de soluções baseadas na plataforma .NET, incluindo aplicativos desktop com Windows Forms, ASP.NET, web services, classes, aplicativos para dispositivos móveis, entre outros. Sua página na Internet é http://msdn.microsoft.com/vstudio/.

Microsoft Visual Studio Express 2005/2008/2010 – uma espécie e Microsoft Visual Studio .NET Express. Site http://www.microsoft.com/express/. É gratuito.

Ambientes de desenvolvimento não-oficiais

Microsoft ASP.NET Web Matrix – um software específico para construção de aplicativos para a Web que utilizam o .NET Framework 1.1.. É bastante leve e gratuita, mas acho que não existe mais.

Macromedia Dreamweaver – seguindo a tradição de suas versões anteriores, este software suporta várias tecnologias (ASP, ASP.NET, JSP, PHP, CSS, Java, XML, entre outras). Não é gratuita.

SharpDevelop – ambiente de Desenvolvimento Integrado (IDE) para projetos VB.NET, Boo (http://boo.codehaus.org) e C#. É gratuito.

MonoDevelop – é uma ambiente de desenvolvimento integrado opensource desenvolvido em 2003 por membros do projeto Mono com o objetivo de portar SharpDevelop para Mono e GTK. É distribuído em licença GNU General Public License. No entanto, MonoDevelop é um projeto independente do SharpDevelop sendo integrado no ambiente gráfico desktop GNOME da plataforma Unix. Site http://www.mono-project.com/. É gratuito.