2015-05-05 7 views
17

Ich mag würde eine Route wie folgt definieren -Greedy Segment mit .NET MVC 5 Attribut Routing

[Route("clients/{*code}/{id:guid}/update")] 
public ActionResult Update(string code, Guid id) 
{ 
} 

-Code wird so etwas wie "foo/bar/xyz" sein.

Leider unterstützt der Out-of-the-Box-MVC keine gierigen Parameter mitten in einer Route-Definition.

Dies war zuvor solved mit den alten MVC-Routing-Konventionen, aber ich möchte dies als RouteAttribute-Definition haben.

+2

wäre ein Pfad von 'clients/{id: guid}/update/{* code}' akzeptabel? –

+0

@DaveAlperovich leider nicht, wie das am Ende der URL wäre. Die Route muss einen gierigen Parameter in der Mitte unterstützen. – jameskind

+0

Ich glaube nicht, dass dieses Muster mit Routenattribut implementiert werden kann –

Antwort

1

Soweit ich weiß, können Sie es nicht direkt tun. Allerdings sollten Sie in der Lage sein, IIS-Modul UrlRewrite zu verwenden und die Abfrage mit einem gierigen Parameter in der Mitte zu der mit einem gierigen Parameter am Ende neu schreiben.

So eine Client-Abfragen: clients/{*code}/{id:guid}/update und Ihr Web-api sehen clients/{id:guid}/update/{*code}

0

Von dem, was ich sagen kann, gibt es keinen Out-of-the-box-Weg, diese andere tun als benutzerdefinierten Code wie this example zu verwenden. Ich hoffe es hilft.