2017-01-05 3 views
1

Ich versuche, die neben einem C# Controller zu senden:Config Routen wie die Methode nach dem Parameter einstellen

www.page.com/app/codes/10/status

Der Parameter ist 10 und status das Verfahren ist.

wenn ich www.page.com/app/codes/status/10 den Status senden, bevor der Parameter funktioniert gut, aber nicht in der anderen Weise.

Ich habe versucht, die Routen zu konfigurieren wie

routes.MapRoute(
name: "codes", 
url: "{controller}/{id}/status", 
defaults: new { controller = "codes", action = "Status", id = UrlParameter.Optional } 
); 

und

routes.MapRoute(
name: "codes", 
url: "codes/{id}/status", 
defaults: new { controller = "codes", action = "Status", id = UrlParameter.Optional } 
); 

aber keiner von ihnen arbeitet zu sein.

Irgendeine Idee? Vielen Dank.

+2

Mit '{id}' in der Mitte Ihrer Route, ich denke nicht, dass es optional sein kann. Versuchen Sie, das 'UrlParameter.Optional' zu entfernen. –

+1

Zeigen Sie die Controller-Aktion an und auch, wo Sie die Route in Relation zu anderen Routen konfigurieren. – Nkosi

+1

Ich habe das für MVC 3 gefunden - [Wie kann meine Route optionale Parameter in der Mitte der URL mit ASP MVC3 verwenden?] (Http://stackoverflow.com/questions/8314148/how-can-my-route- benutze-optional-parameter-in-der-mitte-der-benutze-asp-mvc3 - es ist möglich, dass es in einer neuen version verbessert wurde, aber vielleicht brauchst du zwei routen. – Kobi

Antwort

3

Lösung gefunden dank @John @Nkosi und @Kobi

Grundsätzlich aus diesem entfernen id = UrlParameter.Optional

routes.MapRoute(
name: "codes", 
url: "{controller}/{id}/status", 
defaults: new { controller = "codes", action = "Status" } 
); 

auch ich diesen Weg an der ersten Stelle bewegt.

und es funktioniert gut.

Verwandte Themen