none
Desenvolvimento Web Forms RRS feed

  • Pergunta

  • Pessoal,

    Bom dia,

    Comecei a pouco tempo desenvolver em Web Forms. Esses dias me deparei com a seguinte situação:

    Tenho uma tela que o usuário deve realizar varias operações antes de salvar as informações no banco de dados. A estratégia que adotei foi armazenar os dados na sessão até que seja confirmado a operação.

    Minha dúvida é a seguinte. É um boa prátrica armazenar essas informações na sessão? Tem outra forma de fazer isto? Um padrão?

    Obrigado.


    @MiltonSJr
    quarta-feira, 26 de outubro de 2011 12:40

Respostas

  • Oi Milton, pelo que entendi voce esta persistindo os dados na sessao e gostaria de saber se este é o melhor caminho, certo?

    Bem, se está no mesmo form eu utilizaria a ViewState. Para armazenar na ViewState voce cria uma chave nela (identico ao uso da Session mas voce troca a propriedade Session pela ViewState).

    Voce pode ir mantendo os dados na ViewState até o momento de salva-los no banco. Quando for salvar, basta passar a chave da ViewState.

    • Marcado como Resposta Milton da Silva quarta-feira, 26 de outubro de 2011 16:42
    quarta-feira, 26 de outubro de 2011 16:36

Todas as Respostas

  • Milton,

     

    Eu costumo trabalhar na maioria dos meus projetos com chamadas assincronas para o servidor, via ajax. Assim mantenho as informações na interface do usuário sem gerar requests adicionais, preservando meu servidor e a experiência do usuário.

    Dependendo do formulário, caso ele seja bastante extenso e o usuário demore para preencher você pode ter alguns problemas com sessão expirada e coisas do tipo.

     

    Abraço!

    quarta-feira, 26 de outubro de 2011 13:22
  • Edjan,

    Como vc faria na seguinte situação:

    Na tela tenho um combo que lista Tipos de testes.

    Mais embaixo tenho dois listBoxs. O primeiro lista todos os testes do tipo selecionado no combo.

    No segundo listbox fica os teste que estao vinculados.

    Quando o usuario mudar o combo, o listbox de testes disponiveis é populado perdendo os anteriores, porém ele devem ser salvos no banco.

    Esse salvar é somente no final de tudo. 

    Obrigado. 


    @MiltonSJr
    quarta-feira, 26 de outubro de 2011 13:48
  • Milton,

     

    Preencho no load da página o combo de tipo de testes e desabilito os dois listbox.

    No evento(javascript) change do combo, disparo uma requisição a um serviço(asmx ou wcf, até mesmo rest, de preferência que tenha resposta mais curta) e preencho as listas com a resposta, de acordo com a opção selecionada do usuário.

    Com bibliotecas javascript como o jquery esse trabalho fica muito simples, já que ele faz todo gerenciamento do httprequest pra ti.

    Tem um exemplo aqui de master/detail com jquery e asp.net mvc:

    http://www.leandroprado.com.br/2010/11/formulario-master-detail-com-asp-net-mvc-e-jquery/

    Você consegue achar diversos outros exemplos na internet.

     

    Abraço!

    quarta-feira, 26 de outubro de 2011 13:52
  • Edjan,

    Entendi, porém o projeto não utiliza Web Services ou Serviços WCF e nem precisa disto. Queria saber ser consigo controlar isto apenas com recursos do Web Form mesmo.


    @MiltonSJr
    quarta-feira, 26 de outubro de 2011 14:00
  • A necessidade do uso está ai, mas caso você não queira utilizar efetivamente wcf ou soap, tu pode criar um Generic Handler para retornar uma string para ti.

    Segue um exemplo:

    http://blastersystems.com/blog/2010/08/jquery-ajax-asp-net-generic-handler-interactividade-e-performance/

    Abs

    quarta-feira, 26 de outubro de 2011 15:26
  • Oi Milton, pelo que entendi voce esta persistindo os dados na sessao e gostaria de saber se este é o melhor caminho, certo?

    Bem, se está no mesmo form eu utilizaria a ViewState. Para armazenar na ViewState voce cria uma chave nela (identico ao uso da Session mas voce troca a propriedade Session pela ViewState).

    Voce pode ir mantendo os dados na ViewState até o momento de salva-los no banco. Quando for salvar, basta passar a chave da ViewState.

    • Marcado como Resposta Milton da Silva quarta-feira, 26 de outubro de 2011 16:42
    quarta-feira, 26 de outubro de 2011 16:36