ASP.NET MVC: Resolvendo problema com Firefox em consultas AJAX

Olá, pessoal

Retornando depois de um mês sumido, já aproveito para desejar um ótimo 2013 a todos. Muita saúde e sucesso!

Neste post, falarei sobre um comportamento inusitado do Firefox, no que diz respeito a consultas AJAX.

Vejamos a situação onde desejamos fazer uma consulta assíncrona e carregar o resultado montado em uma partial view para dentro de uma tag <div>. O código na view de pesquisa seria algo como:

@using(Ajax.BeginForm("Pesquisar", "MeuController", new AjaxOptions() { UpdateTargetId = "resultados", HttpMethod="GET" }))
{
    <input type="submit" value="Pesquisar" />
}
<div id="resultados">
</div>

Continue lendo »

View model, domain model, qual model?

Fala, galera

Um dos grandes problemas conceituais ao trabalhar com ASP.NET MVC está na letra “M” de MVC.

A criação de um projeto no Visual Studio do tipo ASP.NET MVC não induz a boas práticas. Temos apenas uma pasta “Models” criada dentro do próprio projeto. Nada de uma sugestão de o que seria o tal “M”.

De fato, o termo “Model” é bastante abrangente e, dependendo do contexto, pode ter um significado diferente. (Outro exemplo é o termo “Serviço”.) Continue lendo »

ASP.NET MVC: Tratamento centralizado de mensagens com TempData

Olá, pessoal

Hoje vou mostrar uma forma legal de tratar a exibição de mensagens em uma aplicação ASP.NET MVC. A ideia é baseada <neste post>, de uma forma mais simplificada, como sugerida nos comentários do mesmo. Serve como um pequeno exercício de ActionResult e extension methods.

O propósito aqui consiste em encapsular o nosso bom e velho <TempData> em uma action result customizada. Com isso, evitamos a repetição da atribuição ao TempData em todas as actions, deixamos o código da action mais expressivo e menos sujeito a erros, já que o TempData usa uma “string mágica” como chave. Continue lendo »

ASP.NET MVC Model Binding (parte 4 – custom binders)

Olá, galera

Este é o último post da série sobre ASP.NET MVC Model Binding, iniciada <aqui>.

Até o post anterior, estávamos falando do processo de binding padrão, tratado pelo default model binder. Neste post, veremos uma das  formas de customizar o processo de binding, implementando um custom model binder.

Vamos lá!

IMPLEMENTANDO UM CUSTOM BINDER

Como exemplo, vamos implementar um custom binder que saiba obter um objeto de determinado tipo a partir de um valor contido na sessão (Session). Continue lendo »

ASP.NET MVC Model Binding (parte 3 – binding manual)

Fala, galera

Vimos nos posts anteriores ([aqui] e [aqui]) o processo de binding ocorrendo automaticamente quando os dados enviados em uma requisição são recebidos como parâmetros nas actions.

No entanto, o processo de binding pode ser invocado manualmente quando desejamos obter maior controle sobre o processo.

Vamos usar como exemplo o objeto Contato dos últimos posts para invocarmos o binding de forma manual:


[HttpPost]
public ActionResult Editar()
{
    var contato = new Contato();
    UpdateModel(contato);
    return RedirectToAction("Index");
}

Continue lendo »