2009-06-05 7 views
4

je la définition de route suivante dans un MapRoute Tableau:Générer des liens dans ASP.NET MVC?

routes.MapRoute(
      "ViewDocument", 
      "browse/document/{document_id}/{document_title}", 
      new { controller = "Document", action = "ViewDocument"} 
      ); 

Je dois créer des liens de documents sur l'index des documents (document objet ont la propriété "id" et "title")

Que devrait être mon approche pour générer le lien dans ASP.NET MVC?

Y a-t-il quelque chose que je fasse de mal avec la définition d'itinéraire?

Répondre

6

Dans vos itinéraires:

routes.MapRoute(
    "ViewDocument", 
    "browse/document/{document_id}/{document_title}", 
    new { controller = "Document", action = "Title", document_id = "", document_title = ""} 
); 

Dans votre vue:

<%= Url.RouteUrl("ViewDocument", new { document_id = ... , document_title = ... }) %> 

(rend simple URL)

ou

<%= Html.RouteLink("ViewDocument", new { document_id = ... , document_title = ... }) %> 

(élément rend <a></a> avec href attribure rempli de l'url)

+1

Url.RouteUrl ne crée pas d'élément d'ancrage HTML. Vous devrez soit écrire à la main le lien et utiliser Url.RouteUrl pour le href ou utiliser Html.ActionLink comme je l'ai suggéré. –

+0

Merci Ray - vous avez raison. C'était une faute de frappe. Je mettrai à jour ma réponse –

0

Vous ne serez pas en mesure de trouver le bon document basé simplement sur son ID?

Le titre ne sera-t-il pas redondant?

+0

ID est unique, mais le titre d'avoir une meilleure urls question url – Mahesh

+0

StackOverflow font la même chose. Le titre est souvent redondant, mais utile pour les personnes qui veulent avoir une idée vague de ce qu'ils cliquent avant de visiter le lien. C'est aussi utile pour le référencement. –

0

Vous pouvez générer des liens vers des documents pour l'itinéraire donné par ce qui suit:

<%= Html.ActionLink("Doc Link", "Title", "Document", new { document_id="id", document_title="title" }, null) %> 

Un couple de choses à connaître:

  • Votre itinéraire personnalisé doit être ajouté avant que la route par défaut .
  • Vous devez inclure les valeurs de route comme indiqué ci-dessus afin de les spécifier dans le lien.
Questions connexes