none
MVC chamar o item da lista pela session RRS feed

  • Pergunta

  • Estou com dificuldade para exibir no método detalhes as informações, alguém poderia me ajudar? se possível explicar como fez! 

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using MyFistMVC.Models;


    namespace MyFistMVC.Controllers
    {
        public class HomeController : Controller
        {
            List<Aluno> lAluno = new List<Aluno>();


            public object ViewBang { get; private set; }

            // GET: Home
            public ActionResult Index()
            {
                ViewBag.Mensagem = "Página Inicial.";
                return View();
            }

            public ActionResult Help()
            {
                ViewBag.Mensagem = "Página Help.";
                return View();
            }
            public ActionResult Criar()
            {
                return View();
            }
            [HttpPost]
            public ActionResult Criar(Aluno A)
            {
                if (Session["Lista"] != null)
                    lAluno = (List<Aluno>)Session["Lista"];
                else
                    Session["Lista"] = lAluno;

                lAluno.Add(A);
                Session["Lista"] = lAluno;
                return RedirectToAction("Listar");
            }

            public ActionResult Listar()
            {

                if (Session["Lista"] != null)
                    lAluno = (List<Aluno>)Session["Lista"];
                else
                    Session["Lista"] = lAluno;

                return View(lAluno);

            }

            public ActionResult Deletar()
            {
                return View();
            }
            public ActionResult Editar()
            {
                
                return View();
            }
            public ActionResult Detalhes()
            {
                
                return View();

                
               

            }

        }
    }

    quinta-feira, 23 de fevereiro de 2017 15:55

Respostas

  • Da mesma forma que você fez com o listar, você agora vai fazer com o Detalhes, porem com a diferença que vai precisar passar um parâmetro com o Id do Aluno que pretende ver os detalhes.

    public ActionResult Detalhes(int id)
    {
    var aluno = new Aluno();

    if (id > 0)
    {
    if (Session["Lista"] != null)
    {
    var alunos = (List<Aluno>)Session["Lista"];

    aluno = alunos.FirstOrDefault(a => a.IdAluno == id);
    }
    }

    return View(aluno);
    }

    Ficará mais ou menos dessa forma e na chamada da Url fará assim:

    http://[seu_servidor]/Home/Detalhes/[id_do_aluno]

    Espero ter sido claro. Qualquer dúvida, nos envie.

    Abraço



    Atenciosamente,
    Raphael A. F. Cardoso
    Blog: www.csharpbrasil.com.br
    Twitter: @csharpbrasil / @ferronicardoso

    “Se um dia você tiver que escolher entre o mundo e o amor, lembre-se: Se escolher o mundo ficará sem amor, mas se você escolher o amor, com ele conquistará o mundo” (Albert Einstein)

    • Marcado como Resposta Marcos Leão terça-feira, 14 de agosto de 2018 20:54
    quinta-feira, 23 de fevereiro de 2017 16:11

Todas as Respostas

  • Da mesma forma que você fez com o listar, você agora vai fazer com o Detalhes, porem com a diferença que vai precisar passar um parâmetro com o Id do Aluno que pretende ver os detalhes.

    public ActionResult Detalhes(int id)
    {
    var aluno = new Aluno();

    if (id > 0)
    {
    if (Session["Lista"] != null)
    {
    var alunos = (List<Aluno>)Session["Lista"];

    aluno = alunos.FirstOrDefault(a => a.IdAluno == id);
    }
    }

    return View(aluno);
    }

    Ficará mais ou menos dessa forma e na chamada da Url fará assim:

    http://[seu_servidor]/Home/Detalhes/[id_do_aluno]

    Espero ter sido claro. Qualquer dúvida, nos envie.

    Abraço



    Atenciosamente,
    Raphael A. F. Cardoso
    Blog: www.csharpbrasil.com.br
    Twitter: @csharpbrasil / @ferronicardoso

    “Se um dia você tiver que escolher entre o mundo e o amor, lembre-se: Se escolher o mundo ficará sem amor, mas se você escolher o amor, com ele conquistará o mundo” (Albert Einstein)

    • Marcado como Resposta Marcos Leão terça-feira, 14 de agosto de 2018 20:54
    quinta-feira, 23 de fevereiro de 2017 16:11
  • a.IdAluno   tá dando erro, ele não existe. No meu model aluno não tem o atributo ID

    tem apenas

    Matricula

    nome

    cpf

    idade

    sexo

    rg

    então eu fiz assim:

    aluno = alunos.FirstOrDefault(a => a.Matricula == id);

    porém também da erro

    Erro de Servidor no Aplicativo '/'.

    The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Detalhes(Int32)' in 'MyFistMVC.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
    Nome do parâmetro: parameters

    Descrição: Ocorreu uma exceção sem tratamento durante a execução da atual solicitação da Web. Examine o rastreamento de pilha para obter mais informações sobre o erro e onde foi originado no código.

    Detalhes da Exceção: System.ArgumentException: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Detalhes(Int32)' in 'MyFistMVC.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
    Nome do parâmetro: parameters


    • Editado Marcos Leão quinta-feira, 23 de fevereiro de 2017 16:44
    quinta-feira, 23 de fevereiro de 2017 16:38
  • Então basta utilizar o parâmetro que necessita. Foi só uma sugestão.

    public ActionResult Detalhes(<informe_o_tipo> matricula)
    {
    // TODO: Realizar a alteração conforme exemplo anterior com da verificação da variável matricula e do filtro da lista.
    }


    Atenciosamente,
    Raphael A. F. Cardoso
    Blog: www.csharpbrasil.com.br
    Twitter: @csharpbrasil / @ferronicardoso

    “Se um dia você tiver que escolher entre o mundo e o amor, lembre-se: Se escolher o mundo ficará sem amor, mas se você escolher o amor, com ele conquistará o mundo” (Albert Einstein)

    • Marcado como Resposta Marcos Leão quinta-feira, 23 de fevereiro de 2017 23:32
    • Não Marcado como Resposta Marcos Leão quinta-feira, 23 de fevereiro de 2017 23:32
    quinta-feira, 23 de fevereiro de 2017 20:42
  • public ActionResult Detalhes(int matricula)
            {
    
                var aluno = new Aluno();
    
                if (matricula > 0)
                {
                    if (Session["Lista"] != null)
                    {
                        var alunos = (List<Aluno>)Session["Lista"];
    
                        aluno = alunos.FirstOrDefault(a => a.Matricula == matricula);
                    }
                }
    
                return View(aluno);
    No caso ficaria assim é assim? só que continua dando erro.
    quinta-feira, 23 de fevereiro de 2017 23:33
  • Correto, é dessa forma. Matricula é do tipo int?

    Qual o erro apresentado?


    Atenciosamente,
    Raphael A. F. Cardoso
    Blog: www.raphaelcardoso.com.br
    Twitter: @csharpbrasil / @ferronicardoso


    sexta-feira, 24 de fevereiro de 2017 11:23