public static void AddRouteValues(RouteValueDictionary routeValueDictionary, string routeName, object routeValue) { IModelUnbinder unbinder = DefaultModelUnbinder; if (routeValue != null) { unbinder = ModelUnbinders.FindUnbinderFor(routeValue.GetType()) ?? (ModelUnbinderProviders.FindUnbinderFor(routeValue.GetType()) ?? DefaultModelUnbinder); } unbinder.UnbindModel(routeValueDictionary, routeName, routeValue); }
public virtual IModelUnbinder FindUnbinderFor(Type type) { IModelUnbinder resultUnbinder = null; Type baseType = null; foreach (var unbinder in _unbinders) { if (unbinder.Key.IsAssignableFrom(type)) { if ((baseType == null) || baseType.IsAssignableFrom(unbinder.Key)) { resultUnbinder = unbinder.Value; baseType = unbinder.Key; } } } return(resultUnbinder); }
static ModelUnbinderHelpers() { DefaultModelUnbinder = new DefaultModelUnbinder(); }
public virtual void Add <T>(IModelUnbinder <T> unbinder) where T : class { Add(typeof(T), new GenericModelUnbinderWrapper <T>(unbinder)); }
public virtual void Add(Type type, IModelUnbinder unbinder) { _unbinders[type] = unbinder; }
public GenericModelUnbinderWrapper(IModelUnbinder <T> unbinder) { _unbinder = unbinder; }