2017-11-03 2 views
2

Nachdem dies in meinem ControllerASP.NET Core-Modell Bindung und ganze Zahlen

[HttpGet] 
public string Get([FromQuery] QueryObject obj) 
{ 
    return "value"; 
} 

public class QueryObject 
{ 
    public int Number { get; set; } 
} 

Wenn ich die Methode aufrufen Setzen Sie sich mit dieser URL

http://localhost/MyController? Number = HALLO

ich eine QueryObject Instanz mit Nummer am Ende mit = 0

Warum dies jemals passiert? Die Abfrage ist eindeutig eine schlechte Anfrage, da Number ist eine ganze Zahl und die Abfrage hat eine string.

Antwort

2

Die Modellbindung versucht, die Anforderung zu analysieren und an die Eigenschaften Ihres Objekts zu binden. Wenn es ungültig ist, finden Sie einen Fehler im ModelState-Objekt.

z.B.

 if (!ModelState.IsValid) 
     { 
      // The ModelState is a Dictionary 
      // holding details of the model binding errors 
     } 

Für weitere Informationen: https://docs.microsoft.com/en-us/aspnet/core/mvc/models/validation

+0

Das ist cool! Jetzt habe ich eine andere Frage. Wie kann ich es für jede Methode automatisieren? Kann ich den Check in die "Pipeline" integrieren, um eine BadRequestException auszulösen, wenn der ModelState nicht gültig ist? Vielen Dank! – SuperJMN

+1

Sie können ModelState-Fehler bei jeder Anfrage mit ActionFilters beheben. Etwas wie dieses: https://stackoverflow.com/a/37093926/593751 – DigitalDan