В моей модели у меня есть следующий десятичный знак?свойство:
public decimal? Budget { get; set; }
Я понимаю, что мне нужен пользовательский связыватель модели для десятичных чисел, который Хаак предоставил по следующей ссылке: http://haacked.com/archive/2011/03/19/fixing-binding-to-decimals.aspx.
Я изменил его код так, чтобы, если значение былопереданное значение содержит символ валюты и / или запятую, затем я удаляю его и затем пытаюсь преобразовать в десятичное число.Это работает, но так как мое свойство имеет нулевой десятичный тип, я также хочу, чтобы оно ничего не принимало и двигалось по своему веселому пути, вставляя ноль в этот столбец в моей базе данных.Прямо сейчас он вставляет 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;
}
Опять же, цель состоит в том, чтобы иметь десятичную дробь?Действуйте так, как обычно, но если есть значение, которое содержит символ валюты и / или запятую, и его можно преобразовать в десятичное число, чтобы вернуть его.
Спасибо