2014-04-24 23 views
0

在asp.net mvc中,我是這樣做的。如何在Nancy中爲Mongodb ObjectId創建自定義模型聯編程序?

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

所以我最終創建了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); 
     } 
    } 
相關問題