http://stackoverflow.com/questions/2443997/nancy-decimal-property-binding-not-working
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)
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрдЧ рд╣реИ, рдЗрд╕реЗ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдПрдХ рдорд╛рд░реНрдЧ рдФрд░ рджрд╢рдорд▓рд╡ рдХреЗ рд╕рд╛рде рдЖрдЬрд╝рдорд╛рдпрд╛ рдФрд░ рдПрдХ рд╣реА рдЕрдкрд╡рд╛рдж рдорд┐рд▓рд╛ред
DecimalConverter.ConvertFrom рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХреГрддрд┐ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рддреБрд░реНрдХреА рд╕рдВрд╕реНрдХреГрддрд┐ рдореЗрдВ "1.1" рдХреЗ рдмрдЬрд╛рдп "1,1" рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред InvariantCulture рдХреЗ рд╕рд╛рде ConvertFrom рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдлрд╝реЙрд▓рдмреИрдХ рд░рдгрдиреАрддрд┐ рд▓рд╛рдЧреВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдХреНрдпрд╛ рдЖрдк рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ?
рдмрд╕ рдЕрдкрдирд╛ ITypeConverter
``` рд╕реА#
///
/// рдиреИрдиреНрд╕реА рдХрдирд╡рд░реНрдЯрд░ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ InvariantCulture рдХреЗ рд╕рд╛рде рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
///
рдкрдмреНрд▓рд┐рдХ рдХреНрд▓рд╛рд╕ рдиреИрдиреНрд╕реА рдиреНрдпреВрдореЗрд░рд┐рдХ рдХрдирд╡рд░реНрдЯрд░: ITypeConverter
{
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдмреВрд▓ CanConvertTo (рдбреЗрд╕реНрдЯрд┐рдиреЗрд╢рди рдЯрд╛рдЗрдк рдЯрд╛рдЗрдк рдХрд░реЗрдВ, рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ рд╕рдВрджрд░реНрдн)
{
рд╡рд╛рдкрд╕реА рдЧрдВрддрд╡реНрдп рдкреНрд░рдХрд╛рд░ред рдЗрд╕рдиреНрдпреВрдореЗрд░рд┐рдХ ();
}
public object Convert(string input, Type destinationType, BindingContext context)
{
if (string.IsNullOrEmpty(input))
{
return null;
}
return System.Convert.ChangeType(input, destinationType, CultureInfo.InvariantCulture);
}
}
```
рдмрд╕ рдЕрдкрдирд╛
ITypeConverter
рд╕реБрдЭрд╛рд╡ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!
рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ System.Convert.ChangeType
рдЕрд╢рдХреНрдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рддрд░рд╣ Nullable.GetUnderlyingType
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
/// <summary>
/// Nancy converter to convert numeric types with InvariantCulture.
/// </summary>
public class InvariantCultureNumericConverter : 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;
}
destinationType = Nullable.GetUnderlyingType(destinationType) ?? destinationType;
return System.Convert.ChangeType(input, destinationType, CultureInfo.InvariantCulture);
}
}
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдмрд╕ рдЕрдкрдирд╛
ITypeConverter
``` рд╕реА#
///
/// рдиреИрдиреНрд╕реА рдХрдирд╡рд░реНрдЯрд░ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ InvariantCulture рдХреЗ рд╕рд╛рде рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
///
рдкрдмреНрд▓рд┐рдХ рдХреНрд▓рд╛рд╕ рдиреИрдиреНрд╕реА рдиреНрдпреВрдореЗрд░рд┐рдХ рдХрдирд╡рд░реНрдЯрд░: ITypeConverter
{
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдмреВрд▓ CanConvertTo (рдбреЗрд╕реНрдЯрд┐рдиреЗрд╢рди рдЯрд╛рдЗрдк рдЯрд╛рдЗрдк рдХрд░реЗрдВ, рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ рд╕рдВрджрд░реНрдн)
{
рд╡рд╛рдкрд╕реА рдЧрдВрддрд╡реНрдп рдкреНрд░рдХрд╛рд░ред рдЗрд╕рдиреНрдпреВрдореЗрд░рд┐рдХ ();
}
```