ModelValue GetModelValue(string key, IModelValueProvider provider, PropertyInfo pi)
{
// Get the model value
var string_value = provider.GetValue(key);
if (string_value == null)
return null;
// Create the model value entry
var mv = new ModelValue();
mv.Name = key;
mv.InputValue = string_value;
// Convert to required type
if (pi.PropertyType != typeof(string))
{
try
{
mv.ConvertedValue = Convert.ChangeType(string_value, pi.PropertyType);
}
catch (Exception x)
{
mv.Errors.Add(new ModelStateError(pi.Name, string.Format("Can't convert '{0}' to {1} - {2}", string_value, pi.PropertyType.FullName, x.Message)));
}
}
else
{
mv.ConvertedValue = string_value;
}
return mv;
}