2016-05-04 6 views
1

Ich habe Probleme mit meinem Routing: ich in meinem Controller habe diese Methode:MVC Routing erwartet, dass die Id, wenn es sould nicht

[HttpGet] 
public JsonResult GetCase(CustomIdentity currentUser, string objectType, Guid objectId) 

Und in meiner Route

r.Match("CTRL/{id}", "CTRL", "details"); 
r.Match("CTRL/GetCase", "CTRL", "GetCase"); 

Das Problem ist, wenn ich möchte ein GET auf meine Methode initiieren: ich kann das nur mit

http://a.com/CTRL/GetCase/EE5014C2-C4AA-44E2-80F9-A23D01317790?objectType=123&objectId=1E5014C2-C4AA-44E2-80F9-A23D01317790 

Aber ich brauche

http://a.com/CTRL/GetCase?objectType=123&objectId=1E5014C2-C4AA-44E2-80F9-A23D01317790 

Was ist falsch mit meinem Code?

Antwort

1

Die Reihenfolge der Routeneinstellungen ändern. Der erste URI ...

http://a.com/CTRL/GetCase/EE5014C2-C4AA-44E2-80F9-A23D01317790?objectType=123&objectId=1E5014C2-C4AA-44E2-80F9-A23D01317790 

entspricht die CTRL/{id} Route, die Sie eingerichtet, wo GetCase in der URI erfüllt {id} Template-Parameter. Die Konvention verwendet die erste übereinstimmende Route, die beim Mapping von Routen gefunden wird.

Sie müssen die Reihenfolge ändern, in der Sie die Route eingerichtet haben. Von dem, was Sie gezeigt haben, wäre das

r.Match("CTRL/GetCase", "CTRL", "GetCase"); 
r.Match("CTRL/{id}", "CTRL", "details");