在我的模型中,我有以下小數?屬性:.NET MVC 3自定義十進制? Model Binder
public decimal? Budget { get; set; }
我意識到我需要小數其哈克在以下鏈接提供的自定義模型聯: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;
}
同樣,我們的目標是有小數點?像通常那樣行事,但是如果有一個包含貨幣符號和/或逗號的值,並且它可以轉換爲小數點然後返回。
感謝