- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
var trimmedKey = Regex.Split(key, @"\.").Last();
if (_options.Any(o => o == ModelBinderOptions.ExpectUnderLineSymbolAsPrefixDelimiter))
trimmedKey = Regex.Split(trimmedKey, "_").Last();
if (_allRequiredParameters.Any(p => p.Key.ToLower() == trimmedKey.ToLower()))
{
var param = _allRequiredParameters.Single(p => p.Key.ToLower() == trimmedKey.ToLower());
try
{
if (param.Value != typeof(string))
{
if (Nullable.GetUnderlyingType(param.Value) != null)
{
try
{
var parseMethod = Nullable.GetUnderlyingType(param.Value).GetMethods().Where(m => m.Name == "Parse").First(m => m.GetParameters().Count() == 1 && m.GetParameters().First().ParameterType == typeof(string));
var value = parseMethod.Invoke(null, new object[] { form[key] });
formValues.Add(param.Key, value);
}
catch(Exception)
{
formValues.Add(param.Key, null);
}
}
else
{
var parseMethod = param.Value.GetMethods().Where(m => m.Name == "Parse").First(m => m.GetParameters().Count() == 1 && m.GetParameters().First().ParameterType == typeof(string));
var value = parseMethod.Invoke(null, new object[] { form[key] });
formValues.Add(param.Key, value);
}
}
else
{
formValues.Add(param.Key, form[key]);
}
}
catch (Exception)
{
// Если произошла ошибка парсинга - печально, но ничего не поделать
}
}