此方法不起作用:
Post["/Login"] = action =>
{
var options = this.Bind();
}
变量“选项”为空! Object不为null,但它没有填充任何属性。
Post["/Login"] = action =>
{
RequestStream body = this.Request.Body;
TextReader text = new StreamReader(body);
JsonReader json = new JsonTextReader(text);
JsonSerializer serializer = new JsonSerializer();
dynamic options = serializer.Deserialize(json);
}
在第二个例子中,“options”变量是OK ...所有属性都被填充(非空)。
我已经发现内部Bind方法会调用以下代码:
return (object) new DynamicModelBinderAdapter(module.ModelBinderLocator, module.Context, (object) null, configuration, blacklistedProperties);
但是这个适配器确实不是对象的实例。它只是传递值的容器。它还有方法TryConvert(ConvertBinder binder,out object result)。任何人都可以澄清Bind方法的真正含义吗?是否有可能获得所需的行为(就像在第二个例子中一样)。