En mi modelo, tengo el siguiente decimal? Propiedad:.NET MVC 3 Custom Decimal? Carpeta modelo
public decimal? Budget { get; set; }
me doy cuenta de que necesito un ligante modelo personalizado para los decimales, que Haack proporcionado en el siguiente enlace: http://haacked.com/archive/2011/03/19/fixing-binding-to-decimals.aspx.
He modificado su código de modo que si el valor que se pasa contiene un símbolo de moneda y/o coma, entonces lo desvío y luego trato de convertirlo a un decimal. Esto funciona, pero dado que mi propiedad es un tipo decimal numerable, también quiero que no acepte nada y siga su camino feliz insertando un nulo en esa columna en mi base de datos. Ahora mismo inserta un 0.00. Sé que me estoy perdiendo algo en mi código, pero estoy teniendo una congelación cerebral.
Aquí está el código de aglutinante:
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;
}
Una vez más, el objetivo es tener decimal? actúa como lo hace normalmente, pero si hay un valor que contiene un símbolo de moneda y/o una coma y se puede convertir a un decimal para luego devolverlo.
Gracias