Como posso criar esse link de ação?
-
02-07-2019 - |
Pergunta
Estou tendo problemas criando um ActionLink usando prévia 5. Todos os documentos que eu posso encontrar descrever a versão genérica mais velho.
Eu estou construindo links em uma lista de trabalhos na página / empregos. Cada trabalho tem um guid, e eu gostaria de construir um link para / trabalhos / detalhes / {guid} para que eu possa mostrar detalhes sobre o trabalho. Meu controlador de postos de trabalho tem um controlador Index e um controlador de detalhes. O controlador Detalhes leva um guid. Eu tentei isso
<%= Html.ActionLink(job.Name, "Details", job.JobId); %>
No entanto, isso me dá a url "/ Empregos / detalhes". O que estou ausente aqui?
resolvido, com a sua ajuda.
Route (adicionado antes do catch-all rota):
routes.Add(new Route("Jobs/Details/{id}", new MvcRouteHandler())
{
Defaults = new RouteValueDictionary(new
{
controller = "Jobs",
action = "Details",
id = new Guid()
}
});
link Ação:
<%= Html.ActionLink(job.Name, "Details", new { id = job.JobId }) %>
Os resultados da âncora html:
Assim, suas rotas confuso. Mudei a minha definição empregos rota antes do site admin e ele funciona agora. Obviamente, minhas definições de rota chupar. Eu preciso ler mais exemplos.
Uma nota lateral, minhas ligações não foram mostrando e quickwatches não estavam funcionando (não pode QuickWatch uma expressão com um tipo anônimo), o que tornou muito mais difícil de descobrir o que estava acontecendo aqui. Descobriu-se as ligações de ação não foram mostrando por causa de um erro de digitação muito menor:
<% Html.ActionLink(job.Name, "Details", new { id = job.JobId })%>
Isso vai me pegar de novo.
Solução
Dê este um tiro:
<%= Html.ActionLink(job.Name, "Details", new { guid = job.JobId}); %>
Onde "guid" é o nome real do parâmetro em sua rota. Isso instrui o mecanismo de roteamento que você deseja colocar o valor da propriedade job.JobId no parâmetro guid da definição de rota.
Outras dicas
Você definiu uma rota para lidar com isso em seu arquivo Global.asax.cs? A rota padrão é {controlador} / {ação} / {id}. Você está passando "JobID", que o quadro não será mapeado para "id" automaticamente. Você quer necessidade de mudar este seja job.id ou definir uma rota para lidar com este caso de forma explícita.