yavsc/src/Yavsc.Org/CustomModelBinder.cs

43 lines
1.5 KiB
C#
Raw Normal View History

2017-03-13 16:44:07 +01:00
using System;
2017-07-08 20:27:36 +02:00
using System.Globalization;
2017-03-13 16:44:07 +01:00
using System.Threading.Tasks;
2023-03-19 17:57:55 +00:00
using Microsoft.AspNetCore.Mvc.ModelBinding;
2017-03-13 16:44:07 +01:00
namespace Yavsc
{
public class MyDecimalModelBinder : IModelBinder
{
2023-03-19 17:57:55 +00:00
async Task IModelBinder.BindModelAsync(ModelBindingContext bindingContext)
2017-03-13 16:44:07 +01:00
{
2023-03-19 17:57:55 +00:00
ValueProviderResult valueResult = bindingContext.ValueProvider
2017-03-13 16:44:07 +01:00
.GetValue(bindingContext.ModelName);
decimal actualValue ;
2017-07-09 04:05:06 +02:00
2017-03-13 16:44:07 +01:00
try {
2023-03-19 17:57:55 +00:00
bindingContext.Result = ModelBindingResult.Success(
Decimal.Parse(valueResult.FirstValue, System.Globalization.NumberStyles.AllowDecimalPoint));
2017-03-13 16:44:07 +01:00
}
catch (Exception ) {
2023-03-19 17:57:55 +00:00
bindingContext.Result = ModelBindingResult.Failed();
2017-03-13 16:44:07 +01:00
}
}
}
2017-07-08 20:27:36 +02:00
public class MyDateTimeModelBinder : IModelBinder
{
2023-03-19 17:57:55 +00:00
async Task IModelBinder.BindModelAsync(ModelBindingContext bindingContext)
2017-07-08 20:27:36 +02:00
{
ValueProviderResult valueResult = bindingContext.ValueProvider
.GetValue(bindingContext.ModelName);
DateTime actualValue ;
2023-03-19 17:57:55 +00:00
// DateTime are sent in the french format
if (DateTime.TryParse(valueResult.FirstValue,new CultureInfo("fr-FR"), DateTimeStyles.AllowInnerWhite, out actualValue))
{
bindingContext.Result = ModelBindingResult.Success(actualValue);
}
else bindingContext.Result = ModelBindingResult.Failed();
2017-07-08 20:27:36 +02:00
}
}
2017-07-09 02:26:20 +02:00
}