none
Usar ou não STATIC para resolver este problema ? RRS feed

  • Pergunta

  • Meu controller precisa funcionar assim:


    static Inscricao inscricao = new Inscricao(); (estou usando o static para funcionar, vou explicar melhor ABAIXO)

    public ActionResult Inscricao(string curso = null)

         faco os tratamentos e seleciono o curso através do id informado e atribuo o valor do curso ao inscricao 

         inscricao.curso = (curso localizado)

         return View(inscricao);

    end;

    ATÉ AI TUDO BEM, POREM TENHO UMA CHAMADA JSON, dentro desta view que exibi as informações e campos para serem preenchidos baseados no curso selecionado.

    public JsonResult AddParticipante(string email, string nome, string telefone, string cargo)
            {
                inscricao.Alunos.Add(new Aluno { login = email, nome = nome, telefone = telefone, cargo = cargo });

                return Json(inscricao.Alunos, JsonRequestBehavior.AllowGet);
            }

    AÍ QUE ESTÁ O PROBLEMA, POIS TODA VEZ QUE FAÇO ESTA CHAMADA AJAX MINHA VARIÁVEL inscricao é zerada, quando nao uso o STATIC, perdendo o valor atribuido (inscricao.curso)

    Devo ou nao usar static ?

    quinta-feira, 20 de abril de 2017 23:59

Respostas

  • Fredy,

    O static não funciona para o que quer. O mais próximo disso seria o uso de variáveis de sessão, mas não é uma boa prática na minha opinião.

    Já que o procedimento de inscrição será realizado efetivamente apenas no final do preenchimento de todos participantes, porque você não monta todo objeto no JavaScript como uma coleção e só posta esta coleção ao final, de uma só vez?


    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".

    Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    terça-feira, 25 de abril de 2017 01:07

Todas as Respostas

  • Não entendi o que você quer fazer.

    Você precisa manter o valor da variável inscrição quando alternar entre as actions Inscricao e AddParticipante? Caso sim, como é essa alternância? Via postback no formulário?


    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".

    Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    sexta-feira, 21 de abril de 2017 00:40
  • Tem certeza que essa informação também não está sendo manipulada em outro lugar?

    Já testou por um breakpoint para identificar em que momento ela está zerando?

    faz um teste bem bobo, pois nao tenho como compilar aqui e testar para você.

    public ActionResult Inscricao(string curso = "teste")
    Depois de tentar identificar com Breakpoint, veja o que acontece, por favor.

    sexta-feira, 21 de abril de 2017 15:45
  • Obrigado pela resposta Juliano !

    Primeiramente, chamo minha view, passando minha entidade INSCRICAO, onde já carreguei algumas informações, como por exemplo INCRICAO.CURSO. Dentro da view, tenho actionlink, que atraves do $.getJSON chama uma action to tipo JsonResut onde passo os parâmetros email e nome. Esta action, adiciona nesta INSCRICAO os seus respectivos valores passados: INSCRICAO.PARTICIPANTES.ADD(email, nome), pois se trata de um relacionamento de 1xN.

    Porém neste momento que chamo a action atraves do json, ele lê todo meu controller novamente, deste o principio, e onde declarei static Inscricao inscricao = new Inscricao(); se nao estiver como static, ele apaga o valor gerando outro nava inscricao. Neste momento ainda nao fiz o post, gostaria somente de ir adicionando PARTICIPANTES dentro da minha entidade para depois fazer um post assim salvando tudo.

    Não sei se este é o método correto de fazer esta rotina. O que preciso de fato é, chamar uma view, passando inscricao, e dentro desta view ter a opção de adicionar um ou diversos participantes, sem dar post. Minha entidade inscricao tem uma propriedade chama participantes que mantem este relacionamento.

    Desde ja agradeço

    Abraço

    Fredy Carvalho

    terça-feira, 25 de abril de 2017 00:30
  • José,

    obrigado pela resposta. Na verdade sou iniciante e estou apanhando um pouco quando preciso usar uma view e trabalhar com json para manipular algumas informações da entidade enviada a ela. Acredito que isso seja fundamentos basicos e nem seja um problema de codificação.

    Resumindo, passo uma entidade para minha view. Depois disso, na minha view, preciso atribuir valores a esta entidade, atraves de json, pois estou fazendo uma inscricao, e nesta view, posso adicionar uma ou varias pessoas. Para depois eu possa cocluir tudo com um unico post final. 

    terça-feira, 25 de abril de 2017 00:37
  • Fredy,

    O static não funciona para o que quer. O mais próximo disso seria o uso de variáveis de sessão, mas não é uma boa prática na minha opinião.

    Já que o procedimento de inscrição será realizado efetivamente apenas no final do preenchimento de todos participantes, porque você não monta todo objeto no JavaScript como uma coleção e só posta esta coleção ao final, de uma só vez?


    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".

    Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    terça-feira, 25 de abril de 2017 01:07
  • Juliano,

    andei pesquisando aqui e é exatamente como disse. As coisas não funcionam da forma que eu imaginava.

    Para ter menos trabalho e não controlar tudo via javascript, irei reestruturar minha view e particionar meus posts, acho que vai ser melhor.

    Muito obrigado !


    terça-feira, 25 de abril de 2017 01:58