如何在Nancy中为Mongodb ObjectId创建自定义模型绑定器?

时间:2014-04-24 03:07:01

标签: mongodb web nancy

在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中注册它?代码示例?

1 个答案:

答案 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);
        }
    }