NancyFx绑定TimeSpan不工作json

时间:2015-06-06 17:44:15

标签: c# angularjs model-binding nancy

早上好(这里)

我正在使用NancyFx,当我尝试使用TimeSpan属性绑定一个类时,我也遇到了问题,我也使用了AngularJs

我使用的json是:

  

{      "描述":" foo",
     " scheduleTime":{           "天":0,           "小时":23,           "分钟":36,           "秒":10,           "毫秒":0      }   };

我的C#班级

public class Scheduler
{
    public int IDHorario{ get; set; }
    public string Descripcion { get; set; }
    public Nullable<TimeSpan> scheduleTime{ get; set; }
}

我的南希模块

Post["/Add"] = parameters =>
{
    var sch= this.Bind<Scheduler>();

    HorarioDB.CreateHorario(sch);

    return new Response().WithStatusCode(HttpStatusCode.OK);
};

但我收到scheduleTime null,我不知道为什么? :&#39;(

任何想法??

非常感谢

1 个答案:

答案 0 :(得分:1)

查看source code,TimeSpan json转换器只处理TimeSpan,而不是可以为空的TimeSpan。

您可以为Nancy提出问题,甚至更好,提供修复 - 它是一个开源项目,欢迎提出争议。

目前,请考虑在课堂上使用不可为空的属性。

或者,创建自己的JavaScriptConverter并注册它。了解TimeSpan converter was born的实现细节。您可以重用现有的,只需验证是否有传入数据。类似的东西:

public override IEnumreable<Type> SupportedTypes
{
   get
   {
      return new[]{typeof(Nullable<TimeSpan>)};
}
public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavaScriptSerializer serializer)
{
   if (dictionary.Count == 0)
   {
      return null;
   }
   return new TimeSpanConverter().Deserialize(dictionary, type, serializer);
}