void BindField(string key, IModelValueProvider provider, object model, PropertyInfo pi)
{
// Get converted value
var mv = GetModelValue(key, provider, pi);
if (mv == null)
return;
// Add to our collection of model values
ModelState.Values.Add(mv.Name, mv);
// Copy over errors too
foreach (var e in mv.Errors)
{
ModelState.Errors.Add(e);
}
// Apply the property value
if (mv.IsValid)
{
// Save the original value
mv.OriginalValue = pi.GetValue(model, null);
// Apply the new value
pi.SetValue(model, mv.ConvertedValue, null);
}
}