t

Comentários recentes

Entendendo a classe AjaxOptions

Postado por Daniel Fonseca Castro - Tuesday, May 26, 2009 12:28 PM

Em outro post mostrei como você pode utilizar a biblioteca JavaScript da Microsoft para construir um formulário em ASP.NET MVC com recursos Ajax [Leia mais], nesse exemplo eu utilizei o Ajax.BeginForm Helper Methods que recebe como parâmetro uma instância da classe AjaxOptions.

Neste post vou mostrar como você pode utilizar a classe AjaxOptions para controlar as solicitações Ajax, a classe possui apenas propriedades, veja a descrição de todas abaixo.

Confirm: essa propriedade recebe uma string com uma mensagem de confirmação que será exibida ao usuário antes do início da solicitação Ajax e antes do método OnBegin. Definir um valor para essa propriedade é equivalente a chamar a função JavaScript Confirm(‘Valor’);

HttpMethod: defini qual método será utilizado para enviar os dados para o servidor (GET ou POST).

InsertionMode: define o modo de inserção da resposta do servidor dentro do elemento HTML definido na propriedade UpdateTargetId, seu valor é definido através de um enum com três opções. InsertAfter: insere a resposta sempre no fim do elemento HTML. InsertBefore: insere a resposta sempre no inicio do elemento HTML . Replace: limpa todo o conteúdo antes de inserir a resposta, esse é o valor padrão.

UpdateTargetId: define o id do elemento HTML que receberá a resposta do servidor.

LoadingElementId: define o id do elemento HTML que será exibido durante o processo. Você pode colocar qualquer coisa dentro desse elemento, tipicamente uma animação é inserida dentro desse elemento.

Url: defini a URL que receberá a solicitação Ajax.

OnBegin: define o nome da função JavaScript que será chamada antes de iniciar o processo. A assinatura da função recebe como parâmetro um objeto AjaxContext.

function Begin(ajaxContext) {
    alert('Begin');
}

OnComplete: define o nome da função JavaScript que será chamada ao final do processo. A assinatura da função recebe como parâmetro três objetos Request, AjaxOptions, AjaxContext.

function Complete(request, ajaxOptions, ajaxContext) {
    alert('Complete');
}

OnSuccess: define o nome da função JavaScript que será chamada depois da função OnComplete caso não ocorra nenhum erro. A assinatura da função recebe como parâmetro um objeto AjaxContext.

function Success(ajaxContext) {
    alert('Success');
}

OnFailure: define o nome da função JavaScript que será chamada depois da função OnComplete caso ocorra algum erro. A assinatura da função recebe como parâmetro um objeto AjaxContext.

function Failure(ajaxContext) {
    alert('Failure');
}

Agora que já conhecemos todas as propriedades da classe AjaxOptions, podemos montar um exemplo para ver tudo isso funcionando.

Modelo

O modelo será apenas uma classe conforme código abaixo.

public class Filme
{
    public int FilmeId { get; set; }
    public string Nome { get; set; }
    public string Genero { get; set; }
    public string Sinopse { get; set; }
}

View

Vou utilizar a View Index do Controller Home.Veja o código abaixo.

Código da view Index

1.Código da view Index

A view acima depende de três arquivos JavaScript , os arquivos MicrosoftAjax.js e MicrosoftMvcAjax.js referente a biblioteca da Microsoft para Ajax e o arquivo AjaxOption.js que contém as funções JavaScript configuradas para as propriedades OnBegin,OnComplete,OnFailure e OnSuccess, veja o código completo do arquivo AjaxOption.js abaixo .

function Begin(ajaxContext) {
    alert('Begin');
}

function Complete(request, ajaxOptions, ajaxContext) {
    alert('Complete'); 
}

function Failure(ajaxContext) {
    alert('Failure'); 
}

function Success(ajaxContext) {
    alert('Success');
}

Para montar o formulário da View utilizei o Helper Ajax.BeginForm , que recebe uma instância da classe AjaxOptions. A view possui também dois span loading e retorno configurados nas propriedades LoadingElementId e UpdateTargetId. Loading: possui um GIF com animação que será exibida durante o processo , esse span possui um atributo style que deixa o seu conteúdo invisível por padrão. Retorno: esse span é utilizado para exibir o retorno do servidor.

Controller

A action Adicionar deve ser inserida no controller Home ,veja o código abaixo.

[AcceptVerbs(HttpVerbs.Post)]
public string Adicionar(Filme filme)
{
    return string.Format("ID: {0} 
Nome: {1}
Genero: {2}
Sinopse: {3}", filme.FilmeId, filme.Nome, filme.Genero, filme.Sinopse); }

A action Adicionar simplesmente retorna uma string com os dados do filme.

Fluxo de execução no lado do cliente

Veja o fluxo de execução da solicitação Ajax que você pode controlar, no lado do cliente.

Código da view Index

2.Fluxo de execução no lado do cliente.

Agora podemos executar a aplicação, o resultado esperado pode ser visto na imagem abaixo.

Código da view Index

3.Imagem da Aplicação.

Conclusão

Vou utilizar apenas uma frase. “O controle esta em suas mãos!”

Aqui você pode baixar o exemplo em C# e VB.NET

Daniel Fonseca Castro

Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Categories: AJAX | ASP.NET MVC

Related posts

  • social bookmarking service
    social bookmarking service
    19 Jul 2010 5:21 AM
    The method of automatic social bookmarking gives more productivity and even the prospective for greater traffic to some person's web site. Moreover, the social bookmarking submissions service would to modify the traffic. Therefore, don't waste you valuable time and just use your chance.

Add comment


 

  Country flag