问题描述: 在ASP.NET MVC模型类中,我们可能会定义一些decimal类型的属性,然后使用转换器属性来指定如何将字符串转换为decimal类型。然而,有时候转换器属性不起作用,导致无法正确地将字符串转换为decimal类型。
解决方法: 通常情况下,如果转换器属性不起作用,可能是由于以下几个原因导致的:
[ModelBinder(typeof(DecimalModelBinder))]
public decimal MyDecimal { get; set; }
ModelBinders.Binders.Add(typeof(decimal), new MyDecimalModelBinder());
public class MyDecimalModelBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var valueResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
if (valueResult != null)
{
decimal result;
if (decimal.TryParse(valueResult.AttemptedValue, out result))
{
return result;
}
}
return null;
}
}
通过检查并确保以上几个方面的设置和实现都正确,就可以解决ASP.NET MVC模型类上的decimal类型转换器属性不起作用的问题了。