在我的模型中,我有以下小数?属性:
public decimal? Budget { get; set; }
Run Code Online (Sandbox Code Playgroud)
我意识到我需要一个小数的自定义模型绑定器,Haack在以下链接中提供:http://haacked.com/archive/2011/03/19/fixing-binding-to-decimals.aspx.
我修改了他的代码,这样如果传入的值确实包含货币符号和/或逗号,那么我将其剥离然后尝试将其转换为小数.这是有效的,但我的属性是一个可以为空的十进制类型,我也希望它不接受任何东西并沿着它的快乐方式移动到我的数据库中的该列插入一个null.现在它插入0.00.我知道我的代码中遗漏了一些内容,但是脑子里却冻结了.
这是绑定码:
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
ValueProviderResult valueResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
ModelState modelState = new ModelState { Value = valueResult };
object actualValue = null;
object newValue = null;
try
{
if (!string.IsNullOrEmpty(valueResult.AttemptedValue))
{
newValue = valueResult.AttemptedValue.Replace("$", "").Replace(",", "");
}
actualValue = Convert.ToDecimal(newValue, CultureInfo.CurrentCulture);
}
catch (FormatException e)
{
modelState.Errors.Add(e);
}
bindingContext.ModelState.Add(bindingContext.ModelName, modelState);
return actualValue;
}
Run Code Online (Sandbox Code Playgroud)
再次,目标是有小数?像往常一样行事,但如果有一个包含货币符号和/或逗号的值,它可以转换为小数,然后返回.
谢谢