Arquivos

Arquivo para a categoria ‘ASP.NET MVC’

Dependência de referências para publicar sites em ASP.NET MVC3

Pessoal,

Como todos sabem o Visual Studio 2010, seja com o SP1 ou não, tem por padrão instalado o MVC 2.  No entanto, muitos projetos já estão sendo desenvolvidos em MVC 3, devido as várias melhorias e novas funcionalidades (Razor, Global Filters, etc).
Quando precisamos realizar deploy das nossas aplicações encontramos host’s com suporte ao MVC 3, porém esse “suporte” dos servidores não possuem as dll’s globais registradas e utilizadas pelo MVC3.

Para contornar essa situação basta enviar as dll’s com suas versões utilizadas pela versão três e sua aplicação estará funcionando perfeitamente. Incluindo versões mais atualizadas do Entity Framework 4.1.

Você tem duas opções para enviar todas referências necessárias:

1- Tentativa e erro. (Mande as que você acha que são necessárias, colocando “Copy Local = True” e vai evoluindo os erros do server até conseguir, com o risco de enviar coisas desnecessárias e ser considerado um newbie).

2- Ler essa dica e aprender fazer do jeito certo.

Para incluir no seu projeto as “Deployable Dependencies” basta clicar com o botão direito do mouse sobre o seu projeto MVC 3 e selecionar a opção: Add Deployable Dependencies. Ou então no menu do Visual Studio em Project > Add Deployable Dependencies

14-01-2012 09-50-44

Imagem01: Opção do Menu

14-01-2012 09-53-10

Imagem02: Dependências resolvidas e prontas para o deploy.

Referências:

http://haacked.com/archive/2011/05/25/bin-deploying-asp-net-mvc-3.aspx

CategoriasASP.NET MVC

SelectList ASP.NET MVC

agosto 5, 2011 3 comentários

Pessoal,

Como definir um elemento <select>  <option></option>  </select> do HTML conhecido em ASP.NET como DropDownlist tendo como selecionado o item desejado?

Por exemplo, temos duas entidades relacionadas entre si, Produto e Categoria. Cada produto tem então um relacionamento com categoria.

Vamos então imaginar uma View onde vamos editar um Produto. Precisamos oferecer a opção de trocar também a categoria do produto, para isso precisamos informar quais categoria temos cadastradas e o mais importante para usabilidade, pré-selecionar a categoria (dentre as listadas) o qual o produto se relaciona.

Vamos imaginar um produto (Xbox 360) relacionado com uma categoria (Consoles), ao editar esse produto a DropDownList precisa ter todas as categorias e deve estar selecionada a categoria (Consoles), mesmo que não seja ela a primeira da lista.

Se fosse em ASP.NET no code behind iriamos definir o SelectedIndex de acordo com o Id da categoria, o controle DropDownlist iria salvar o dia.

E em ASP.NET MVC?

Temos um extension method definido nos Html Helpers conhecido como Html.DropDownList

O mesmo tem uma implementação que espera um SelectList (veja mais sobre SelectList em: MSDN Library http://msdn.microsoft.com/en-us/library/system.web.mvc.selectlist.aspx ).

Ficou simples agora, precisamos então criar uma SelectList e retornar para a View a mesma, para que o Helper crie o elemento <select> e possa selecionar a opção desejada.

Mas como?

Esse mesmo helper espera um item presente na ViewData do MVC com um identificador contendo a lista de itens e o qual deles é o selecionado. Então vamos aos exemplos:

No controller você vai selecionar todos os registros existentes de categorias e informar quais são as propriedades que possuem o valor e o texto a ser apresentado no <select> e também qual o item a ser selecionado. E ao mesmo tempo retornar isso para ViewData, nesse caso utilizando o dinâmico ViewBag.

Exemplo:

ViewBag.Categoria = new SelectList(negocioCategoria.Listar(), "CategoriaId", "Nome", entidade.Categoria.CategoriaId);

  • O primeiro parâmetro desse construtor recebe um IEnumerable com todos elementos, ou seja, são todas as minhas categorias.
  • O segundo parâmetro recebe qual propriedade vai conter o Valor do <select>
  • O terceiro recebe qual propriedade vai conter o texto desse valor
  • O quarto e último recebe qual código é o selecionado, ou seja, aquele que esta relacionado com o produto no caso. Nesse exemplo o objeto entidade já foi preenchido e já tem o objeto relacionado também preenchido.

Depois disso na View precisamos apenas chamar o nosso Helper e passar para ele o campo dinâmico que criamos na ViewBag, aqui no exemplo ViewBag.Categoria. Exemplo:

@Html.DropDownList("Categoria", string.Empty)

Espero que ajudem os desenvolvedores leitores desse blog.

Aguardo feedback.

[]´s

Lino

HandleErrorAttribute – ASP.NET MVC

Pessoal,

Como realizar o handle de exceptions de suas actions presentes nos controles do ASP.NET MVC?

Podemos herdar o HandleErrorAttribute e criar nosso próprio atributo. E podemos então sobrepor o evento OnException e codificar o que devemos ou não fazer com a exceção que foi disparada.

Abaixo um exemplo de código onde faço a herança e implemento o evento. O seu conteúdo está usando o Enterprise Library para tomar outras ações como registrar log e informar ao usuário mensagens amigáveis e não de sistema. Outro post comentamos sobre o EL.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MensagemException;
using Microsoft.Practices.EnterpriseLibrary.ExceptionHandling;

namespace ViewMvc
{
    public class ErroSistema : HandleErrorAttribute
    {
        public override void OnException(ExceptionContext filterContext)
        {
            Exception erro = filterContext.Exception;
            Exception novoErro;
            bool rethrow = ExceptionPolicy.HandleException(erro, "Policy", out novoErro);

            base.OnException(filterContext);
        }
    }
}

Para utilizar o atributo basta ir à declaração da Action e colocar a declaração do atributo:

        [HttpPost]
        [ErroSistema]
        public ActionResult Novo(FormCollection colecao, Contato entidade)
        {
           // Aqui tem código...
           // ....
        }

Ou então se estiver usando o MVC 3 pode registrar esse atributo para toda aplicação devido aos Global Filters presente no seu Global.asax Exemplo:

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    //filters.Add(new HandleErrorAttribute());
    filters.Add(new ErroSistema { View = "Error" });
}

Lembre-se: Sempre colocar o web.config para mostrar custom errors e não aquela página de erro tradicional do .net.

<customErrors mode="RemoteOnly" />

ECO Developers 2010–Goiânia

novembro 7, 2010 5 comentários

Pessoal,

Venho convocar os profissionais de tecnologia do estado de Goiás a comparecerem no Castro’s Hotel no próximo dia 24/11/2010 as 08:00 até as 18:00 para um super evento.

Para mais detalhes, local, inscrição entre no site do ECODevelopers em Goiânia.
Para outras cidades veja se a sua esta no roteiro: ECODevelopers

[História]
O Eco surgiu em Goiânia em 2009 e foi idealizado pelo DevGoiás. Depois desse primeiro evento onde até mudas de árvores foram distribuídas a onda verde se espalhou pelo Brasil, primeiro foi Brasília e Natal que realizaram suas edições.

[Meu Histórico]
A primeira edição em Goiânia eu fui apresentar o ASP.NET MVC para o público, nessa época pouco se falava do MVC para ASP.NET e me lembro de comentários como: “Não sei se isso vai pegar”, “Isso é voltar no tempo”. Hoje o padrão já virou até modinha, então quem estava já ligado nessas novidades naquela época já está passos a frente da maioria hoje em dia. Veja mais nesse post e fotos desse evento

Depois recebi o convite para ir para Brasília e dessa vez eu fui apresentar junto ao Kenj o Windows Azure. Foi um evento bem bacana, com uma estrutura muito maior que de Goiânia e foi muito bacana estar em outra cidade realizando um evento idealizado aqui na minha cidade e com meus amigos de comunidade. Veja fotos desse evento.

[Atualidade]
Hoje o ECODevelopers é um evento de comunidade, qualquer uma pode realizar o mesmo desde que siga as regras públicas definidas e compartilhadas através do Creative Commons, para realizar na sua cidade procure o pessoal da organização.

Hoje são 11 (onze) cidades já confirmadas em vários estados e tudo começou em Goiânia, muito bacana isso!

Irei novamente apresentar o MVC  só que dessa vez irei falar da nova versão 3 que está no preview 1. Irei mostrar as novidades dessa versão e também reforçar a necessidade de aprender fazer certo. Vai ser uma apresentação direta no ponto principal do MVC na minha humilde opinião: “Alguns desenvolvedores não sabem programar para web.”

[Convite]
Venho reforçar o convite e pedir que compareçam no evento do próximo dia 24 e fiquem para minha apresentação, por favor já estudem o assunto antes e cheguem com dúvidas e questionamentos, vamos descobrir toda a verdade, somente a verdade. (Gravem essa frase para o dia do evento).

ASP.NET MVC–Sebrae–Comtec–Goiás

outubro 20, 2010 1 comentário

O pessoal do Sebrae e da Comtec organizaram um evento junto com o DevGoiás para trazer ao pessoal de Goiânia e região algumas novidades que foram apresentadas no Teched 2010. Como todos não tiveram a oportunidade de viajar a São Paulo para conferir no próprio TechEd foi uma excelente oportunidade de se atualizarem em alguns assuntos.

Minha missão foi o ASP.NET MVC 3 Preview 1, outros colegas como o Kono falou sobre o IE9 e HTML5, o Alliston sobre C# 4.0 e F#. O Marcelo Paiva sobre Windows Azure e a Sara sobre BPOS.

Foi bacana o evento, tivemos a oportunidade além de discutir sobre tecnologia também de integração entre os participantes aumentando nosso networking.

Grande abraço ao pessoal que esteve presente e meu muito obrigado ao pessoal do Sebrae e Comtec por mais essa oportunidade.

[]’s

Lino

DSC06705DSC06709

ASP.NET MVC–Workshop Politec Goiânia

No último dia 18/10/2010 estive no meu trabalho apresentando e discutindo sobre desenvolvimento para web e com isso mostrando como fazer certo utilizando ASP.NET MVC.

Peço desculpas por ter esquecido de registrar esse momento com fotos, mas foi um excelente evento. Foi inicialmente movido pelas minhas palavras e depois virou um bate-papo de várias perguntas e respostas do pessoal tirando dúvidas e explorando o máximo do que o MVC pode oferecer.

Foi bacana ver colegas que trabalham com Java vendo com é o nosso mundo no .NET e também analistas querendo conhecer melhor a parte técnica para escreverem melhor seus documentos.

Fica registro o evento.

Abraço

Agenda Palestras sobre ASP.NET MVC

Pessoal,

Gostaria de compartilhar minha agenda para essa semana, tenho dois eventos a realizar:

1- Workshop sobre ASP.NET MVC – Esse workshop vai ser realizado nas instalações da Politec (onde trabalho) para seus colaboradores, irei apresentar e orientar meus colegas sobre esse novo modo de desenvolvimento para web para quem trabalha com ASP.NET

2- Ciclo de palestras pós TechEd. O pessoal do Sebrae e Comtec estão organizando um ciclo de palestras sobre assuntos que foram passados ao público na última edição do TechEd Brasil. Minha missão novamente será o ASP.NET MVC 3 Preview 1 mostrando suas novidades aos desenvolvedores. Para realizar sua inscrição clique aqui.

Fiquem ligados que ainda temos o EcoDevelopers vindo aí, mais sobre o MVC.

Grande abraço.

Lino

Request Validation no ASP.NET MVC com .NET Framework 4.0

outubro 13, 2010 2 comentários

Muitos aí já devem ter observado que colocar a diretiva validateRequest=”false” em páginas aspx rodando no .NET Framework 4.0 não mais “funciona”. Mesmo colocando a diretiva a página ainda segue as “ordens” principais definidas no Framework 4.

Para que eu preciso disso mesmo? Na hora que você precisar por exemplo armazer código fonte ou utilizar algum editor rico em HTML por exemplo, o framework não continua com a requisição com medo de ser injeção de código malicioso.

E agora? Basta ir no web.config e colocar a seguinte linha:

<system.web>
   <httpRuntime requestValidationMode="2.0" />
</system.web>

E no ASP.NET MVC? Continuo colocando a diretiva na página? Não. Coloque na action que recebe o POST, faça assim:

[HttpPost]
[ValidateInput(false)]
public ActionResult Novo(FormCollection colecao)
{
}

Deixo aí a explicação para facilitar a vida de quem vier a precisar.

[]´s até a próxima.

Dica: Utilizem o Server.HtmlDecode e o Server.HtmlEncode para trabalharem com códigos javascript e html nos campos input. Mais detalhes em: Msdn Library

CategoriasASP.NET, ASP.NET MVC, Dicas

ASP.NET MVC e PagSeguro

outubro 10, 2010 12 comentários

Que tal integrar sua aplicação com o PagSeguro? Isso você já consegue com os exemplos no próprio site do PagSeguro. Inclusive existe uma dll de terceiros que você utilizar caso esteja trabalhando com WebForms. Veja mais nesse link: PagSeguro para .NET

Mas como fazer se minha aplicação é em MVC? Não tenho controles de servidor. E Agora? GET e POST são a resposta, e não vamos precisar de componentes. Vamos apenas baixar o servidor de teste para facilitar nosso desenvolvimento. Faça download do servidor de testes em: Servidor Testes PagSeguro

Veja a nota de descrição do PagSeguro:

notapagseguro

Para receber esse “enviado de volta ao seu site” vamos implementar uma ActionResult:

public ActionResult Retorno()
{
return View();
}

E para “Cada vez que a transação muda de status, um POST é enviado.” Vamos implementar outra ActionResult.

[HttpPost]
public ActionResult Retorno(FormCollection colecao)
{
return View();
}

Cabe agora ao desenvolvedor aplicar isso ao seu contexto e implementar o conteúdo de cada action. Mas onde estão os dados do PagSeguro? O token, o status? Estão todos no FormCollection, basta verificar as chaves que ele envia.

O formulário de envio de dados é um form comum de html, abaixo o link para download de uma aplicação exemplo:

Download Aplicação Exemplo

Ainda ficou com dúvidas? Que tal um vídeo explicativo? Veja a seguir:

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Join 497 other followers