none
Envio de Objetos da camada Model RRS feed

  • Pergunta

  • Boa noite, pessoal!

    Estou iniciando um projeto em MVC e mas estou precisando de ajuda com um detalhe.

    No arquivo RegistrationController.cs eu tenho o seguinte código:
    public ActionResult NivelSelect(int id)
    {
    	Curso curso = CursoRepository.GetCurso(id);
    	User user = UserRepository.GetUsuarioLogado();
    	RegistrationViewModel model = new RegistrationViewModel();
    	model.curso = curso;
    	model.user = user;
    	return View("NivelSelect", model);
    }

    Até aí funciona muito bem, chamando o arquivo NivelSelect.cshtml que consegue utilizar os atributos do objeto model passado para preencher as informações na tela.

    @model MeuProjeto.Models.RegistrationViewModel 
    @{
        ViewBag.Title = "Escolha o nível desejado";
    }
    <h2>@ViewBag.Title</h2>
    
    @using (Html.BeginForm("NivelSelected", "Registration", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
    {
        <div class="form-group">
            <div class="col-md-10">
                @Html.DropDownListFor(m => m.idNivel, Model.niveis)
            </div>
        </div>
    
        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" class="btn btn-default" value="Continuar" />
            </div>
        </div>
    
    }
    O problema é que quando o usuário clica em "Enviar", eu gostaria que esse objeto que preencheu a tela voltasse no mesmo estado para o controller.
    Mas quando ele volta, o objeto model não vem preenchido (ou não vem).


    Ou seja, a view é carregada com o objeto model e consegue preencher os campos na tela com informações do objeto. Mas depois do envio, o controller recebe este mesmo objeto vazio...

    Alguém poderia me dar uma luz?

    O que estou fazendo errado ou não estou fazendo?

    Muito obrigado!!!


    Felipe Bülle

    sábado, 14 de março de 2015 21:50

Respostas

  • Olá Bulle

    Quais são os campos que não vem em seu controller?

    Pelo que eu entendi, você quer que seja armazenado em memória um model do tipo "Curso"

    Veja que na sua view, você não possui nenhum campo que é referente ao "Curso"

    O que você talvez poderia fazer, seria colocar algum campo do tipo hidden para armazenar o Id desse curso

    Outra opção, seria você utilizar TempData para armazenar ou até mesmo utilizar a própria Session["Curso"] = Curso

    • Marcado como Resposta Bülle quinta-feira, 2 de abril de 2015 19:44
    sexta-feira, 27 de março de 2015 01:28

Todas as Respostas

  • Olá Bulle

    Quais são os campos que não vem em seu controller?

    Pelo que eu entendi, você quer que seja armazenado em memória um model do tipo "Curso"

    Veja que na sua view, você não possui nenhum campo que é referente ao "Curso"

    O que você talvez poderia fazer, seria colocar algum campo do tipo hidden para armazenar o Id desse curso

    Outra opção, seria você utilizar TempData para armazenar ou até mesmo utilizar a própria Session["Curso"] = Curso

    • Marcado como Resposta Bülle quinta-feira, 2 de abril de 2015 19:44
    sexta-feira, 27 de março de 2015 01:28
  • Foi exatamente o que fiz, Rodrigo!

    Obrigado pelo feedback!!!


    Felipe Bülle

    quinta-feira, 2 de abril de 2015 19:44