* Use PropertyHelper.SetValue in DefaultControllerActionArgumentBinder
* Update DefaultModelMetadataProvider to use delegates exposed on PropertyHelper instance. Fixes #2355
This commit is contained in:
parent
6223aac9be
commit
18efefd5cf
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in New Issue