You've already forked linux-packaging-mono
Imported Upstream version 4.0.0~alpha1
Former-commit-id: 806294f5ded97629b74c85c09952f2a74fe182d9
This commit is contained in:
61
external/referencesource/System.Web/ModelBinding/ModelBinders.cs
vendored
Normal file
61
external/referencesource/System.Web/ModelBinding/ModelBinders.cs
vendored
Normal file
@ -0,0 +1,61 @@
|
||||
namespace System.Web.ModelBinding {
|
||||
|
||||
public static class ModelBinders {
|
||||
|
||||
private static readonly ModelBinderDictionary _binders = CreateDefaultBinderDictionary();
|
||||
|
||||
public static ModelBinderDictionary Binders {
|
||||
get {
|
||||
return _binders;
|
||||
}
|
||||
}
|
||||
#if UNDEF
|
||||
internal static IModelBinder GetBinderFromAttributes(Type type, Func<string> errorMessageAccessor) {
|
||||
AttributeCollection allAttrs = TypeDescriptorHelper.Get(type).GetAttributes();
|
||||
CustomModelBinderAttribute[] filteredAttrs = allAttrs.OfType<CustomModelBinderAttribute>().ToArray();
|
||||
return GetBinderFromAttributesImpl(filteredAttrs, errorMessageAccessor);
|
||||
}
|
||||
|
||||
internal static IModelBinder GetBinderFromAttributes(ICustomAttributeProvider element, Func<string> errorMessageAccessor) {
|
||||
CustomModelBinderAttribute[] attrs = (CustomModelBinderAttribute[])element.GetCustomAttributes(typeof(CustomModelBinderAttribute), true /* inherit */);
|
||||
return GetBinderFromAttributesImpl(attrs, errorMessageAccessor);
|
||||
}
|
||||
|
||||
private static IModelBinder GetBinderFromAttributesImpl(CustomModelBinderAttribute[] attrs, Func<string> errorMessageAccessor) {
|
||||
// this method is used to get a custom binder based on the attributes of the element passed to it.
|
||||
// it will return null if a binder cannot be detected based on the attributes alone.
|
||||
|
||||
if (attrs == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
switch (attrs.Length) {
|
||||
case 0:
|
||||
return null;
|
||||
|
||||
case 1:
|
||||
IModelBinder binder = attrs[0].GetBinder();
|
||||
return binder;
|
||||
|
||||
default:
|
||||
string errorMessage = errorMessageAccessor();
|
||||
throw new InvalidOperationException(errorMessage);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
private static ModelBinderDictionary CreateDefaultBinderDictionary() {
|
||||
// We can't add a binder to the HttpPostedFileBase type as an attribute, so we'll just
|
||||
// prepopulate the dictionary as a convenience to users.
|
||||
|
||||
ModelBinderDictionary binders = new ModelBinderDictionary() {
|
||||
#if UNDEF
|
||||
{ typeof(HttpPostedFileBase), new HttpPostedFileBaseModelBinder() },
|
||||
{ typeof(byte[]), new ByteArrayModelBinder() },
|
||||
{ typeof(Binary), new LinqBinaryModelBinder() }
|
||||
#endif
|
||||
};
|
||||
return binders;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user