2016-06-29 7 views
0

Ich versuche, eine API-Methode in einer ASP.NET Core-App zu erstellen, die einen ganzzahligen Eingabeparameter erhalten kann oder nicht. Ich habe den folgenden Code, bekomme aber einen Fehler damit. Was mache ich falsch?Optionaler INT-Parameter im Web-API-Attribut-Routing

// GET: api/mycontroller/{id} 
[HttpGet("id:int?")] 
public IActionResult Get(int id = 0) 
{ 
    // Some logic here... 
} 

Hier ist der Fehler Ich erhalte: enter image description here

+0

Welche Fehler haben Sie bekommen? –

+0

Der Fehler wurde im ursprünglichen Post einfach hinzugefügt. – Sam

+0

Nicht mit asp.net-Kern übermäßig vertraut und kein Entwickler. env handlich, aber ich vermute, dass es so sein sollte: '" {id?: int} "' wobei Sie angeben, dass 'id' optional ist und der Typ 'int' ist. Du verpasst also das '{' '' '' '' '' und auch '' '' '' '' 'ist an der falschen Stelle, soweit ich das beurteilen kann. –

Antwort

0

"id:int?" keine gültige Route Vorlage ist, es ist nur ein Zeichenfolgenliteral (wie als ob Sie die Anforderungs-URL erwartet buchstäblich wie http://server/api/MyController/id:int? zu suchen, die ist nicht erlaubt. Komischerweise ist das nur wegen des ? Charakters, wenn man das dann entfernt die wörtlichen erlaubt sein würde (auch wenn nutzlos es ist)

Während "{id:int?}" eine richtige ro ist. Vorlage ute und ordnungsgemäß funktionieren, das heißt die URL aussehen wird http://server/api/MyController/42 oder http://myserver/api/MyController/, die den Standardwert

So sollte das Verfahren so sein geben:

// GET: api/mycontroller/{id} 
[HttpGet("{id:int?}")] 
public IActionResult Get(int id = 0) 
{ 
    // Some logic here... 
} 
Verwandte Themen