2009-08-14 14 views
0

Ich habe Probleme mit Html.ActionLink, wenn ich eine Route habe, die einen Parameter dauert. Ich habe folgende Router in global.asx:Probleme mit einer benutzerdefinierten Route in ASP.NET-MVC

 routes.MapRoute(
      "Default",            // Route name 
      "{controller}/{action}/{id}",       // URL with parameters 
      new { controller = "Home", action = "Index", id = "" } // Parameter defaults 
     ); 
     routes.MapRoute(
      "materias", 
      "{controller}/{action}/{id},{titulo_materia}.html", 
      new { controller = "materias", action = "Index", id = "", titulo_materia = "" } 
     ); 

Wenn ich Action zwei Parameter übergeben, funktioniert alles ok. Aber wenn ich versuche, eine Verbindung mit der ersten Strecke mit so etwas wie ich am Ende zu schaffen:

http://meusite.com/controller-name/[parameter],.html

EDIT:

Hier ist der Aktionslink, die Probleme i`m:

<span class="editar"><%=Html.ActionLink("Editar", "Edit", "Users", new { id = this.Model.login }, null)%></span> 

Dieser Link befindet sich auf einer anderen Seite, die zum Verwalten von Benutzerdaten verwendet wird.

+0

Post Html.ActionLink Code –

+0

i bearbeiten meinen Beitrag mit dem Actioncode. – Cleiton

+0

Was passiert, wenn Sie die zweite Routenregel vor die erste verschieben? –

Antwort

1

Zuerst sollten Sie die generelle Route am Boden setzen.

Dann, wie über so etwas zu tun:

routes.MapRoute(
     "materias", 
     "{materias}/{action}/{id},{titulo_materia}.html", 
     new { controller = "materias", action = "Index", id = "", titulo_materia = "" } 
    ); 

    routes.MapRoute(
     "Default",            // Route name 
     "{controller}/{action}/{id}",       // URL with parameters 
     new { controller = "Home", action = "Index", id = "" } // Parameter defaults 
    ); 

diese Weise die materias Route funktioniert nur für den materias Controller. (Nicht getestet)

EDIT: htmm .. versucht martin Beispiel mit einem kleinen Zusatz verwendet:

Html.RouteLink("Link Title", new { controller = "Controller", Action= "Action",id = this.Model.login }); 
+0

Ich habe es getestet ... Aber ich bekomme das gleiche Ergebnis. Wenn ich versuche, einen Link mit actionlink mit zwei Parametern zu erstellen, bekomme ich etwas wie "http://meusite.com/controllerName/[first-paramters]?titulo_materia=foobar – Cleiton

+0

yeah! Ich habe es getan und es hat gut funktioniert! Danke! – Cleiton

0

Verwendung:

Html.RouteLink("Link Title", new { controller = "Controller", Action= "Action" }); 
+0

@Martin, aber ich muss ID des Benutzers übergeben, um Benutzerinformationen zu erhalten. – Cleiton

Verwandte Themen