Domanda

Sto riscontrando problemi durante la creazione di un ActionLink utilizzando l'anteprima 5. Tutti i documenti che posso trovare descrivono la versione generica precedente.

Sto costruendo collegamenti su un elenco di lavori nella pagina / lavori. Ogni lavoro ha un guid, e mi piacerebbe costruire un link a / jobs / details / {guid} in modo da poter mostrare i dettagli sul lavoro. Il mio controller di lavoro ha un controller Index e un controller Dettagli. Il controller Dettagli prende una guida. Ho provato questo

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

Tuttavia, ciò mi dà l'URL "/ jobs / details". Cosa mi sto perdendo qui?


Risolto, con il tuo aiuto.

Percorso (aggiunto prima del percorso generale):

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

Link azione:

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

Risultati nell'ancora html:

  

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

Quindi, le sue rotte confuse. Ho spostato la mia definizione del percorso di lavoro prima dell'amministratore del sito Web e ora funziona. Ovviamente, le definizioni del mio percorso SUCK. Ho bisogno di leggere altri esempi.

Una nota a margine, i miei collegamenti non venivano visualizzati e i quickwatch non funzionavano (non è possibile eseguire il quickwatch di un'espressione con un tipo anonimo), il che ha reso molto più difficile capire cosa stesse succedendo qui. Si è scoperto che i link di azione non venivano visualizzati a causa di un errore di battitura molto piccolo:

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

Mi riprenderà.

È stato utile?

Soluzione

Provaci:

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

Dove " guid " è il nome effettivo del parametro nel percorso. Questo indica al motore di routing che si desidera inserire il valore della proprietà job.JobId nel parametro guid della definizione del percorso.

Altri suggerimenti

Hai definito un percorso per gestirlo nel tuo file Global.asax.cs? La route predefinita è {controller} / {action} / {id}. Stai passando " JobID " ;, che il framework non mapperà su " id " automaticamente. Devi modificare questo in job.id o definire un percorso per gestire esplicitamente questo caso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top