2016-08-02 18 views
1

In meinem Controller, habe ich einen Scheck setzen:Fluent-Validierung: Wie passt man das falsche Nachrichtenformat an?

if (!ModelState.IsValid) 
{ 
    return BadRequest(ModelState); 
} 

Das ist mir Fehler gibt, ist spezielles Format, zum Beispiel:

{ 
    "Message": "The request is invalid.", 
    "ModelState": { 
    "stocks.SellerType": [ 
     "SellerType should be greater than 101" 
    ], 
    "stocks.SourceId": [ 
     "SourceId should be less than 300" 
    ] 
    } 
} 

Wie ich diese Fehlermeldung Format anpassen kann. Ich weiß, wie man die Fehlermeldungen anpasst, d. H. "SourceId sollte weniger als 300 sein". Aber ich habe keine Ahnung, wie kann ich "Message" ändern, JSON-Feld "ModelState" entfernen oder umbenennen?

+0

ein Wrapper, der einen kleineren ModelState zurückgibt, wäre für Sie in Ordnung? zB: Ihr eigenes benutzerdefiniertes Objekt mit Nachricht (und anderen Feldern, falls nötig) – meorfi

+0

ja ich möchte mein eigenes benutzerdefiniertes Objekt. – maverick

+0

Wo bekommen Sie diesen Fehler, auf 'Controller'? –

Antwort

1

aktualisieren: auf Standard-Nachricht ändern und Standard für ModelState Formatierungsfehler halten Sie HttpError Klasse verwenden können:

if (!ModelState.IsValid) 
{ 
    return Content(HttpStatusCode.BadRequest, 
     new HttpError(ModelState, includeErrorDetail: true) 
     { 
      Message = "Custom mesage" 
     }); 
} 

Oder Sie können Ihr eigenes Modell für Überprüfungsergebnis und zusammen mit erforderlichen Statuscode definieren (json-Feld "ModelState" umbenennen). Zum Beispiel:

class ValdationResult 
{ 
    public string Message { get; } 
    public HttpError Errors { get; } 

    public ValdationResult(string message, ModelStateDictionary modelState) 
    { 
     Message = message; 
     Errors = new HttpError(modelState, includeErrorDetail: true).ModelState; 
    } 
} 
... 

if (!ModelState.IsValid) 
{ 
    return Content(HttpStatusCode.BadRequest, 
     new ValdationResult("Custom mesage", ModelState)); 
} 
+0

Hallo, habe es versucht und ich habe hässliche Serialisierung mit k__BackingField? {"Nachricht": "Die Anfrage ist ungültig.", "Fehler": {"netMonthly": {"_ errors": [{" k__BackingField": null, " k__BackingField": "Fehlermeldung"}], " k__BackingField": null}}} –

+0

@LeszekRepie, Sie haben Recht. Das war nur ein Beispiel dafür, wie eine benutzerdefinierte Antwort mit dem Statuscode "BadRequest" zurückgegeben wird. Siehe aktualisierte Antwort - die Standardformatierung bleibt erhalten. –