在asp.net mvc中,我这样做了。
public class ObjectIdBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var result = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
return new ObjectId(result.AttemptedValue);
}
}
我怎么在南希这样做? 另外你如何在bootstrapper中注册它?代码示例?
答案 0 :(得分:0)
所以我最终创建了Nancy的Request类的扩展。 我创建了一个新的Body方法,它接受一个类型并使用Json.Net契约 绑定模型中ObjectId类型的任何属性。
public static class BodyBinderExtension
{
public static T Body<T>(this Request request)
{
request.Body.Position = 0;
string bodyText;
using (var bodyReader = new StreamReader(request.Body))
{
bodyText = bodyReader.ReadToEnd();
}
JsonConvert.DefaultSettings = () => new JsonSerializerSettings
{
ContractResolver = new ObjectIDContractResolver()
};
return JsonConvert.DeserializeObject<T>(bodyText);
}
}