Usuário com melhor resposta
Onde está o erro no código?

Pergunta
-
Boa tarde pessoal,
Não sei onde estou errando ou se está faltando algo, já fiz um código parecido, mas este não está funcionando. Tenho todas as Views criadas, mas não estou conseguindo passar o parâmetro para Details, sempre retorna Null quando digito na URL: http://localhost:30535/Details/Brasil
Não é para ele passar para a string pais "Brasil "para o método Details?
namespace AppCapitulo3.Controllers
{
public class HomeController : Controller
{
//
// GET: /Home/
List<Paises> lst = new List<Paises>
{
new Paises{Nome="Brasil", Continente="América do Sul", Idioma="Português"},
new Paises{Nome="Alemanha", Continente="Europa", Idioma="Alemão"},
new Paises{Nome="Austrália", Continente="Oceania", Idioma="Inglês"},
new Paises{Nome="Uruguai", Continente="América do Sul", Idioma="Espanhol"},
new Paises{Nome="Japão", Continente="Ásia", Idioma="Japonês"}
};
public ActionResult Index()
{
return View();
}
public ActionResult List()
{
return View(lst);
}
public ActionResult Details(string pais)
{
if (pais == null) return View("NotFound");
var model = (from p in lst.Where(x => x.Nome == pais)
select p).FirstOrDefault();
if (model == null) return View("NotFound");
return View(model);
}
}
}
Respostas
-
Parceiro, suas rotas não conhecem o parâmetro pais. tanto que se você colocar com querystring vai funcionar (http://localhost:30535/Details?pais=Brasil).
Crie uma rota personalizada para essa caso:
routes.MapRoute( name: "DetalhePais", url: "{controller}/{action}/{pais}", defaults: new { controller = "Home", action = "Details", pais = UrlParameter.Optional } );
algo do tipo
- Sugerido como Resposta Raphael Heitor sexta-feira, 13 de junho de 2014 13:46
- Marcado como Resposta LWMN sábado, 14 de junho de 2014 03:53
Todas as Respostas
-
Olá,
se o seu parametro estiver sendo passado corretamente, retorna a View com o nome veja :
if (pais == null) return View("NotFound"); var model = (from p in lst.Where(x => x.Nome == "Brasil") select p).FirstOrDefault(); if (model == null) return View("NotFound"); return View("Details",model);
-
-
-
Parceiro, suas rotas não conhecem o parâmetro pais. tanto que se você colocar com querystring vai funcionar (http://localhost:30535/Details?pais=Brasil).
Crie uma rota personalizada para essa caso:
routes.MapRoute( name: "DetalhePais", url: "{controller}/{action}/{pais}", defaults: new { controller = "Home", action = "Details", pais = UrlParameter.Optional } );
algo do tipo
- Sugerido como Resposta Raphael Heitor sexta-feira, 13 de junho de 2014 13:46
- Marcado como Resposta LWMN sábado, 14 de junho de 2014 03:53