2009-06-05 14 views
4

Ich habe die folgende Route Definition in einer MapRoute Tabelle:Generieren Sie Links in ASP.NET MVC?

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

Ich habe Links von Dokumenten auf Dokumentenindex Ansicht erstellen

Was (Dokument-Objekt „id“ und „Titel“ Eigenschaft hat) soll sei mein Ansatz zum Generieren der Verbindung in ASP.NET MVC?

Gibt es irgendetwas, was ich falsch mit der Routendefinition mache?

Antwort

6

In Ihrer Routen:

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

Ihrer Ansicht:

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

(Ebene url macht)

oder

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

(macht <a></a> Element mit href attribure mit der URL gefüllt)

+1

Url.RouteUrl erstellt kein HTML-Ankerelement. Sie müssen entweder den Link schreiben und Url.RouteUrl für den href verwenden oder Html.ActionLink verwenden, wie ich es vorgeschlagen habe. –

+0

Danke Ray - du hast Recht. Es war ein Tippfehler. Ich werde meine Antwort aktualisieren –

0

Können Sie das richtige Dokument nicht einfach anhand seiner ID finden?

Wird der Titel nicht redundant sein?

+0

ID ist einzigartig, aber Titel besser url – Mahesh

+0

Stackoverflow Frage Urls, die gleiche Sache zu tun haben. Der Titel ist oft überflüssig, aber nützlich für Leute, die vor dem Besuch des Links eine vage Vorstellung davon haben möchten, worauf sie klicken. Es ist auch nützlich für SEO. –

0

Sie können für die Route Links zu Dokumenten erzeugen mit den angegebenen folgenden:

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

Ein paar Dinge zu beachten:

  • Ihre individuelle Route vor der Default-Route hinzugefügt werden müssen .
  • Sie müssen die Routenwerte wie oben angegeben angeben, damit sie in der Verknüpfung angegeben werden.
Verwandte Themen