input filters

This commit is contained in:
Paul Schneider 2017-07-08 20:27:36 +02:00
commit e625c31b44
5 changed files with 63 additions and 30 deletions

View file

@ -1,6 +1,8 @@
using System;
using System.Globalization;
using System.Threading.Tasks;
using Microsoft.AspNet.Mvc.ModelBinding;
using Newtonsoft.Json;
namespace Yavsc
{
@ -9,13 +11,12 @@ namespace Yavsc
public async Task<ModelBindingResult> BindModelAsync(ModelBindingContext bindingContext)
{
ValueProviderResult valueResult = bindingContext.ValueProvider
Console.WriteLine(JsonConvert.SerializeObject(bindingContext));
ValueProviderResult valueResult = bindingContext.ValueProvider
.GetValue(bindingContext.ModelName);
decimal actualValue ;
ModelStateEntry modelState = new ModelStateEntry();
try {
actualValue = Decimal.Parse(valueResult.FirstValue, System.Globalization.NumberStyles.AllowDecimalPoint);
return await ModelBindingResult.SuccessAsync(bindingContext.ModelName,actualValue);
}
catch (Exception ) {
@ -23,4 +24,28 @@ namespace Yavsc
return await ModelBindingResult.FailedAsync(bindingContext.ModelName);
}
}
public class MyDateTimeModelBinder : IModelBinder
{
public async Task<ModelBindingResult> BindModelAsync(ModelBindingContext bindingContext)
{
Console.WriteLine(JsonConvert.SerializeObject(bindingContext.ValueProvider));
ValueProviderResult valueResult = bindingContext.ValueProvider
.GetValue(bindingContext.ModelName);
Console.WriteLine(JsonConvert.SerializeObject(valueResult));
DateTime actualValue ;
ModelStateEntry modelState = new ModelStateEntry();
CultureInfo[] cultures = { new CultureInfo("en-US"),
new CultureInfo("fr-FR"),
new CultureInfo("it-IT"),
new CultureInfo("de-DE") };
foreach (CultureInfo culture in cultures)
if (DateTime.TryParse(valueResult.FirstValue,culture, DateTimeStyles.AllowInnerWhite, out actualValue))
{
return await ModelBindingResult.SuccessAsync(bindingContext.ModelName,actualValue);
}
return await ModelBindingResult.FailedAsync(bindingContext.ModelName);
}
}
}