bio*_*tal 7 dynamic-language-runtime nancy
Nancy通过dynamic变量将我的查询字符串和表单值传递给我的处理程序.下面的示例显示了通过Nancy请求传递给POST处理程序的表单值,例如Request.Form.xxx.
处理器
Post["/"] = _ =>
{
var userId = (string) Request.Form.userid;
if (userId.IsEmpty()) return HttpStatusCode.UnprocessableEntity;
return HttpStatusCode.OK;
};
Run Code Online (Sandbox Code Playgroud)
您可以看到我正在转换userid为字符串,然后使用字符串扩展方法来检查值是null还是空字符串(相当于string.IsNullOrEmpty()).
我更喜欢的是在动态类型上使用扩展方法,以便在执行任何其他操作之前执行我的健全性检查.我想要这样的代码:
if(Request.Form.userid.IsEmpty()) return HttpStatusCode.UnprocessableEntity;
Run Code Online (Sandbox Code Playgroud)
但是,您不能拥有dynamic类型的扩展方法.此外,您无法通过反射检查是否存在属性.欢迎来到DLR.
题
执行预检查以确保将预期的查询/表单值传递给我的Nancy处理程序的最简单,最安全的方法是什么?
谢谢
The*_*kie 14
Request.Form.userid.HasValue
Run Code Online (Sandbox Code Playgroud)
适用于所有DynamicDictionary成员,例如表单,查询和路由参数
| 归档时间: |
|
| 查看次数: |
5285 次 |
| 最近记录: |