Pregunta

Tengo problemas para crear un ActionLink con la Vista previa 5. Todos los documentos que puedo encontrar describen la versión genérica anterior.

Estoy construyendo enlaces en una lista de trabajos en la página / trabajos. Cada trabajo tiene un guid, y me gustaría construir un enlace a / jobs / details / {guid} para poder mostrar detalles sobre el trabajo. Mi controlador de trabajos tiene un controlador de índice y un controlador de detalles. El controlador Detalles toma un guid. He intentado esto

<%= Html.ActionLink(job.Name, "Details", job.JobId); %>

Sin embargo, eso me da la url "/ jobs / details". ¿Qué me estoy perdiendo aquí?


Resuelto, con tu ayuda.

Ruta (agregada antes de la ruta general):

routes.Add(new Route("Jobs/Details/{id}", new MvcRouteHandler())
{
Defaults = new RouteValueDictionary(new
    {
    controller = "Jobs",
    action = "Details",
    id = new Guid()
    }
});

Enlace de acción:

<%= Html.ActionLink(job.Name, "Details", new { id = job.JobId }) %>

Resultados en el ancla html:

  

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

Entonces, sus rutas confusas. Moví mi definición de ruta de trabajo antes del administrador del sitio web y ahora funciona. Obviamente, mis definiciones de ruta apestan. Necesito leer más ejemplos.

Una nota al margen, mis enlaces no se mostraban y los relojes rápidos no funcionaban (no se puede ver rápidamente una expresión con un tipo anónimo), lo que hizo mucho más difícil descubrir qué estaba pasando aquí. Resultó que los enlaces de acción no se mostraban debido a un error tipográfico muy pequeño:

<% Html.ActionLink(job.Name, "Details", new { id = job.JobId })%>

Eso me atrapará nuevamente.

¿Fue útil?

Solución

Dale una oportunidad a esto:

<%= Html.ActionLink(job.Name, "Details", new { guid = job.JobId}); %>

Donde '' guid '' es el nombre real del parámetro en su ruta. Esto le indica al motor de enrutamiento que desea colocar el valor de la propiedad job.JobId en el parámetro guid de la definición de ruta.

Otros consejos

¿Ha definido una ruta para manejar esto en su archivo Global.asax.cs? La ruta predeterminada es {controlador} / {action} / {id}. Está pasando '' JobID '', que el marco no asignará a '' id '' automáticamente. Debe cambiar esto para que sea job.id o definir una ruta para manejar este caso explícitamente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top