yavsc/Yavsc/CustomModelBinder.cs

45 lines
1.7 KiB
C#

8 years ago
using System;
7 years ago
using System.Globalization;
8 years ago
using System.Threading.Tasks;
using Microsoft.AspNet.Mvc.ModelBinding;
namespace Yavsc
{
public class MyDecimalModelBinder : IModelBinder
{
public async Task<ModelBindingResult> BindModelAsync(ModelBindingContext bindingContext)
{
7 years ago
ValueProviderResult valueResult = bindingContext.ValueProvider
8 years ago
.GetValue(bindingContext.ModelName);
decimal actualValue ;
8 years ago
try {
actualValue = Decimal.Parse(valueResult.FirstValue, System.Globalization.NumberStyles.AllowDecimalPoint);
return await ModelBindingResult.SuccessAsync(bindingContext.ModelName,actualValue);
}
catch (Exception ) {
}
return await ModelBindingResult.FailedAsync(bindingContext.ModelName);
}
}
7 years ago
public class MyDateTimeModelBinder : IModelBinder
{
public async Task<ModelBindingResult> BindModelAsync(ModelBindingContext bindingContext)
{
ValueProviderResult valueResult = bindingContext.ValueProvider
.GetValue(bindingContext.ModelName);
DateTime actualValue ;
ModelStateEntry modelState = new ModelStateEntry();
// DateTime are sent in the french format
if (DateTime.TryParse(valueResult.FirstValue,new CultureInfo("fr-FR"), DateTimeStyles.AllowInnerWhite, out actualValue))
7 years ago
{
return await ModelBindingResult.SuccessAsync(bindingContext.ModelName,actualValue);
}
return await ModelBindingResult.FailedAsync(bindingContext.ModelName);
}
}
}