* Use PropertyHelper.SetValue in DefaultControllerActionArgumentBinder

* Update DefaultModelMetadataProvider to use delegates exposed on
  PropertyHelper instance.

Fixes #2355
This commit is contained in:
Pranav K 2015-04-15 17:03:15 -07:00
parent 6223aac9be
commit 18efefd5cf
2 changed files with 5 additions and 5 deletions

View File

@ -71,15 +71,15 @@ namespace Microsoft.AspNet.Mvc
var propertyHelpers = PropertyHelper.GetProperties(controller);
foreach (var property in properties)
{
var propertyHelper = propertyHelpers.First(helper => helper.Name == property.Key);
var propertyHelper = propertyHelpers.First(helper =>
string.Equals(helper.Name, property.Key, StringComparison.Ordinal));
if (propertyHelper.Property == null || !propertyHelper.Property.CanWrite)
{
// nothing to do
return;
}
var setter = PropertyHelper.MakeFastPropertySetter(propertyHelper.Property);
setter(controller, property.Value);
propertyHelper.SetValue(controller, property.Value);
}
}

View File

@ -121,14 +121,14 @@ namespace Microsoft.AspNet.Mvc.ModelBinding.Metadata
var propertyEntry = new DefaultMetadataDetails(propertyKey, attributes);
if (propertyHelper.Property.CanRead && propertyHelper.Property.GetMethod?.IsPublic == true)
{
propertyEntry.PropertyGetter = PropertyHelper.MakeFastPropertyGetter(propertyHelper.Property);
propertyEntry.PropertyGetter = propertyHelper.ValueGetter;
}
if (propertyHelper.Property.CanWrite &&
propertyHelper.Property.SetMethod?.IsPublic == true &&
!key.ModelType.IsValueType())
{
propertyEntry.PropertySetter = PropertyHelper.MakeFastPropertySetter(propertyHelper.Property);
propertyEntry.PropertySetter = propertyHelper.ValueSetter;
}
propertyEntries.Add(propertyEntry);