Ich baue Restful Stil API in VS2015, C#, ASP.NET5 MVC6-Stack und ich kam zu kleinen Schwierigkeiten, wenn es um das Routing geht. Im adnotations direkt in Controller:ASP.NET5 MVC 6 Routing mit optionalen Parameter/Default-Parameter Wert
[HttpGet("machine/{machineId}-{cnt:int}")]
public IActionResult GetReportsByMachineId(string machineId, int cnt)
{
var item = _reportRepository.GetReportsByMachineId(machineId, 0, cnt);
if ((item == null) || (!item.Any()))
{
return HttpNotFound();
}
return new ObjectResult(item);
}
und es funktioniert, wenn ich api/report/machine/[machineName]-5
nennen - i erhalten 5 Dokumente aus der Datenbank.
Aber ich würde cnt
Parameter optional mit Standardwert machen - so würde der Anruf für api/report/machine/[machineName]
gültig sein.
Basierend auf http://stephenwalther.com/archive/2015/02/07/asp-net-5-deep-dive-routing Ich habe bisher versucht:
[HttpGet("machine/{machineId}-{cnt:int=10}")]
- Controller nicht fangen api/machine/{machineName}
(i Begrüßungsseite Code erhalten)
[HttpGet("machine/{machineId}-{cnt?}")]
- App wird nicht starten (i auch nicht bekommen MVC Begrüßungsseite)
[HttpGet("machine/{machineId}-{cnt:int?}")]
- App wird nicht starten (wie oben)
Irgendwelche Ideen?
-Code für die gesamte Steuerung (ich habe keine anderen Routen angegeben): http://pastebin.pl/view/11050284
danken Ihnen. Also war das Problem mit dem Trennzeichen? Ich benutzte "-" und solange die Parameter verpflichtend waren funktionierte es. – lukpep
das ist richtig. Die Frame-Arbeit weiß, dass das '/' entfernt wird, aber das '-' wird nicht automatisch entfernt. Sie hätten den Computernamen mit dem Bindestrich verwenden müssen, was nicht optional ist – Nkosi