NancyFX: How do I check if query-string / form values have been correctly passed to my handler?
dynamic-language-runtime, nancy
Solution
Request.Form.userid.HasValue
Works for all DynamicDictionary members, such as Form, Query and route parameters
Problem
Nancy passes my query-string and form values to my handlers via a `dynamic` variable. The example below shows form values being passed in to a POST handler via the Nancy request e.g. `Request.Form.xxx`. Handler ``` Post["/"] = _ => { var userId = (string) Request.Form.userid; if (userId.IsEmpty()) return HttpStatusCode.UnprocessableEntity; return HttpStatusCode.OK; }; ``` You can see that I am casting the `userid` to a string and then using a string extension method to check if the value is null or empty string (equivalent to `string.IsNullOrEmpty()`). What I would prefer is to to have the extension method on the dynamic type so I could perform my sanity checks before doing anything else. I want code like this: ``` if(Request.Form.userid.IsEmpty()) return HttpStatusCode.UnprocessableEntity; ``` However, you cannot have extension methods for `dynamic` types. Also, you cannot check for the presence of a property via reflection. Welcome to the DLR. Question What is the easiest, safest way to perform pre-checks to ensure that the expected query/form values have been passed to my Nancy handler? Thanks