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:

http: // localhost: 3570 / WebsiteAdministration / Detalhes ? id = 2db8cee5-3c56-4861-aae9-a34546ee2113

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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top