c# - Overriding ModelState's very technical error messages -


i have following code:

public class eventcontroller : apicontroller {     public ihttpactionresult post(list<event> events)     {         if (!modelstate.isvalid)         {             return badrequest(modelstate);         }         else         {             foreach (event event in events)             {                 debug.writeline(event.importance.tostring());                 debug.writeline(event.date.tostring());                 debug.writeline(event.description);             }             return ok();         }     } }  public class event {     [dataannotationsextensions.integer(errormessage = "{0} must number.")]     [range(0,10),required()]             public int? importance { get; set; }      public datetime date { get; set; }      [regularexpression(@"^.{20,100}$", errormessage="{0} must between 20 , 100 characters.")]     public string description { get; set; } } 

and i'm posting following json:

[{"importance":"1.1","date":"2015-03-12","description":""},{"importance":"6","date":"2015-10-02","description":"a"}] 

the response is:

{ "message": "the request invalid.", "modelstate": { "events[0].importance": [ "could not convert string integer: 1.1. path '[0].importance', line 1, position 20.",   "the importance field required." ], "events[1].description": [   "description must between 20 , 100 characters." ] 

} }

i'm concerned "could not convert string integer: 1.1. path '[0].importance', line 1, position 20." i'd override message more friendly , less revealing, perhaps "importance must number.". ideally i'd define default conversion error in dataannotation. tried using dataannotationsextensions nuget found here http://dataannotationsextensions.org/ unfortunately targets mvc , not override modelstate errors. if isn't possible override, i'm curious common workarounds might be.

one solution (what don't lot) use object type instead of int? type:

public class event {     [dataannotationsextensions.integer(errormessage = "{0} must number.")]     [range(0,10),required()]             public object importance { get; set; }      ... } 

if conversion default message overridden.


Comments

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -

How to provide Authorization & Authentication using Asp.net, C#? -