南希小数属性绑定不起作用

时间:2014-06-26 20:50:50

标签: c# nancy

我遇到了绑定十进制属性的问题:

Oh noes! ---> Nancy.ModelBinding.ModelBindingException: Unable to bind to type: Nancy.Models.SomeModel
at Nancy.ModelBinding.DefaultBinder.Bind(NancyContext context, Type modelType, Object instance, BindingConfig configuration, String[] blackList)
at Nancy.ModelBinding.DynamicModelBinderAdapter.TryConvert(ConvertBinder binder, Object& result)
at CallSite.Target(Closure , CallSite , Object )
at System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](CallSite site, T0 arg0)
at Nancy.ModelBinding.ModuleExtensions.Bind[TModel](INancyModule module)
at KBZServisNancy.Modules.SomeModule.<.ctor>b__2(Object x) in d:\Nancy\Modules\SomeDecimalModule.cs:line 38
at CallSite.Target(Closure , CallSite , Func`2 , Object )
at Nancy.Routing.Route.<>c__DisplayClass4.b__3(Object parameters, CancellationToken context)
--- End of inner exception stack trace ---
at Nancy.NancyEngine.InvokeOnErrorHook(NancyContext context, ErrorPipeline pipeline, Exception ex)
at Nancy.NancyEngine.InvokeOnErrorHook(NancyContext context, ErrorPipeline pipeline, Exception ex)

如果十进制属性的值是例如20,50绑定工作正常,但如果值是20.50我得到上层错误消息。据此,文化敏感可能存在问题,但语境文化是{en-US}。已经存在一些此类问题Culture model binding并且它们已经解决,所以我不知道问题可能在哪里。我正在使用Nancy v0.23在控制台应用程序中进行自托管。感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

在当前的Nancy版本中,只需编写自己的ITypeConverter

/// <summary>
/// Nancy converter to convert numeric types with InvariantCulture.
/// </summary>
public class NancyNumericConverter : ITypeConverter
{
    public bool CanConvertTo(Type destinationType, BindingContext context)
    {
        return destinationType.IsNumeric();
    }

    public object Convert(string input, Type destinationType, BindingContext context)
    {
        if (string.IsNullOrEmpty(input))
        {
            return null;
        }

        return System.Convert.ChangeType(input, destinationType, CultureInfo.InvariantCulture);
    }
}

(我已更新问题https://github.com/NancyFx/Nancy/issues/1587。)

答案 1 :(得分:2)

我已将此问题视为一个问题,看起来像一个文化问题,在其美国时效果很好,但如果我将我的本地文化改为土耳其并尝试小数点我也会得到例外。

https://github.com/NancyFx/Nancy/issues/1587