C# Nancy decimal属性绑定不工作

C# Nancy decimal属性绑定不工作,c#,nancy,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, Str

我在绑定十进制属性时遇到问题:

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)
Oh-noes!——>Nancy.ModelBinding.ModelBindingException:无法绑定到类型:Nancy.Models.SomeModel
位于Nancy.ModelBinding.DefaultBinder.Bind(NancyContext上下文,类型modelType,对象实例,BindingConfig配置,字符串[]黑名单)
位于Nancy.ModelBinding.DynamicModelBinderAdapter.TryConvert(ConvertBinder绑定器、对象和结果)
目标(闭包、调用站点、对象)
在System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](调用站点,T0 arg0)
在Nancy.ModelBinding.ModuleExtensions.Bind[TModel](在模块模块中)
在d:\Nancy\Modules\SomeDecimalModule.cs中的kbzservicesnancy.Modules.SomeModule.b2(对象x)处:第38行
在CallSite.Target(闭包、CallSite、Func`2、对象)
在Nancy.Routing.Route.c__;u DisplayClass4.b__;u 3(对象参数,CancellationToken上下文)
---内部异常堆栈跟踪的结束---
在Nancy.NancyEngine.InvokeOnErrorHook(NancyContext上下文,ErrorPipeline管道,异常ex)
在Nancy.NancyEngine.InvokeOnErrorHook(NancyContext上下文,ErrorPipeline管道,异常ex)

例如,若decimal属性的值为20,50,则绑定可以正常工作,但若值为20.50,则会收到较高的错误消息。根据这一点,文化敏感可能存在问题,但上下文文化是{en US}。这类问题已经解决了,所以我不知道问题出在哪里。我正在使用Nancy v0.23和控制台中的自托管应用程序。提前感谢您的帮助。

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


在当前版本中,只需编写自己的
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);
    }
}
//
///Nancy converter用于转换具有不变量区域性的数字类型。
/// 
公共类NancyNumericConverter:ITypeConverter
{
公共bool CanConvertTo(类型destinationType,BindingContext)
{
返回destinationType.IsNumeric();
}
公共对象转换(字符串输入、类型destinationType、BindingContext上下文)
{
if(string.IsNullOrEmpty(输入))
{
返回null;
}
返回System.Convert.ChangeType(输入、destinationType、CultureInfo.InvariantCulture);
}
}
(我也更新了这个问题。)