Question

Je ne parviens pas à créer un ActionLink à l'aide de Preview 5. Tous les documents disponibles décrivent l'ancienne version générique.

Je construis des liens sur une liste de travaux sur la page / travaux. Chaque travail a un guide, et j'aimerais construire un lien vers / jobs / details / {guid} pour pouvoir afficher les détails du travail. Mon contrôleur de travaux dispose d'un contrôleur d'index et d'un contrôleur de détails. Le contrôleur Details prend un guide. J'ai essayé cela

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

Cependant, cela me donne l'URL "/ jobs / details". Qu'est-ce qui me manque ici?

Résolu, avec votre aide.

Route (ajoutée avant la route à tout faire):

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

Lien d'action:

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

Résultats dans l'ancre HTML:

  

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

Donc, ses itinéraires déroutants. J'ai déplacé la définition de mon itinéraire de travaux avant l'administrateur du site Web et cela fonctionne maintenant. De toute évidence, mes définitions de route SUCK. J'ai besoin de lire plus d'exemples.

Une note de côté, mes liens ne figuraient pas et les montres rapides ne fonctionnaient pas (je ne pouvais pas regarder rapidement une expression de type anonyme), ce qui rendait beaucoup plus difficile de comprendre ce qui se passait ici. Il s'est avéré que les liens d'action ne figuraient pas à cause d'une faute de frappe très mineure:

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

Cela va me chercher à nouveau.

Était-ce utile?

La solution

Donnez à ceci un coup de feu:

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

Où & guid; guid " est le nom actuel du paramètre dans votre itinéraire. Ceci indique au moteur de routage que vous souhaitez placer la valeur de la propriété job.JobId dans le paramètre guid de la définition d'itinéraire.

Autres conseils

Avez-vous défini un itinéraire pour gérer cela dans votre fichier Global.asax.cs? La route par défaut est {controller} / {action} / {id}. Vous passez "JobID", que le cadre ne mappera pas à & id; id " automatiquement Vous devez soit changer ceci en job.id, soit définir un itinéraire pour gérer ce cas explicitement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top