I just converted a bunch of web services to Web API2. Now my C# code blows up when the browser sends an empty string and it enters my code converted to null. I have researched global solutions and none that I have found work for me.
I can of course set it manually for every string in all my Web API models, but I have scores of models so would prefer a global solution.
Been here: string.empty converted to null when passing JSON object to MVC Controller and other pages and attempted to implement each solution, but to no avail.
How can I globally set the default for ConvertEmptyStringToNull to false?
you can try Aspect pattern by using Postsharp and declare below Aspect.
It will apply for entire solution. Worked for me.
You need to swap out the
ModelMetadataProvider
with one that sets theConvertEmptyStringToNull
tofalse
Such as:
You would register in your WebApiConfig like:
config.Services.Replace(typeof(ModelMetadataProvider), new EmptyStringAllowedModelMetadataProvider());
This was inspired by https://gist.github.com/nakamura-to/4029706