Ich habe ein Modell, an dem ich Anmerkungen von Datenvalidierung verwenden, wie folgt aus:Validierung von ASP.NET-Datenanmerkungen - Fehler bei Validierungen auf niedriger Ebene ausblenden?
public int Id { get; set; }
[Required(ErrorMessage = "Please enter the Sample Description.")]
public string Description { get; set; }
[Required(ErrorMessage = "Please enter the Start Date.")]
[DataType(DataType.Date)]
public DateTime StartDate { get; set; }
Daten über eine API eingesetzt wird und, wenn die Validierung fehlschlägt, würde ich zurückgeschickte Nachrichten Fehler zu übernehmen möchten und setzen sie direkt auf den Bildschirm.
Dies ist für so etwas wie dies in Ordnung ist:
[Required(ErrorMessage = "Please enter the Sample Description.")]
public string Description { get; set; }
Aber im Fall der Integer-Eigenschaft gezeigt, „Id“, und der Client sendet, einen Wert, der nicht in eine ganze Zahl umgewandelt werden kann, zum Beispiel „x“, dann bekommt man eine geringe Meldung wie diese zurückgegeben:
"Could not convert string to integer: x. Path 'Id', line 1, position 9.
Was will ich wirklich eine Meldung wie
"Please provide an integer for the Id".
mehr
Gibt es trotzdem eine Datenvalidierung durch Annotation und trotzdem eine nützlichere Nachricht als das, was ich bekomme?
Vielen Dank für Ihre Antwort. Wenn ich die zweite Ihrer Ansätze versuche, bekomme ich die gleiche Fehlermeldung wie zuvor ("" Konnte Zeichenfolge nicht in Ganzzahl konvertieren: x. Pfad 'Id', Zeile 1, Position 9. "). Ich bin mir nicht sicher, ob die erste Option ist für mich anwendbar. Ich habe eigentlich keine Ansichten - nur Modelle und Controller. Die Controller reagieren auf Anfragen und geben JSON zurück. Wenn Sie den ersten vielleicht erweitern könnten, könnte ich das versuchen? Nochmals vielen Dank. – glaucon
Wenn Sie nicht Wenn Sie keine Views haben, müssen Sie dies auf der Controller-Ebene überprüfen, da DataAnnotations-Ergebnisse in View gerendert werden. Sie können HttpResponse zurückgeben ... werfen Sie einen Blick auf http://stackoverflow.com/questions/12240713/put-content-in -httpresponsesemessage-Objekt – Sami