/// <summary> /// Binds the parameter to a route /// </summary> /// <param name="parameter">The parameter.</param> /// <param name="controllerActionRoute">The controller action route.</param> public void Bind(IControllerActionParameter parameter, IControllerActionRoute controllerActionRoute) { //ignore parameters with null values. if (parameter.ParameterValue == null) { return; } BindParameter(parameter, controllerActionRoute); }
protected override void BindParameter(IControllerActionParameter parameter, IControllerActionRoute controllerActionRoute) { var complexModel = parameter.ParameterValue as ComplexModel; if (complexModel.Id == null) { throw new System.ArgumentException("complexModel.Id can not be null. Did you forget to set it on your source model?"); } controllerActionRoute.SetRouteValue("myid", complexModel.Id); }
/// <summary> /// Binds the parameter to a route. /// </summary> /// <param name="parameter">The parameter.</param> /// <param name="controllerActionRoute">The controller action route.</param> protected override void BindParameter(IControllerActionParameter parameter, IControllerActionRoute controllerActionRoute) { if (parameter.ParameterValue is string || parameter.ParameterValue.GetType().IsPrimitive) { controllerActionRoute.SetQueryStringParameter(parameter.ParameterName, parameter.ParameterValue.ToString()); } else { //assume we need to pass the model as a query string parameter var properties = from p in parameter.ParameterValue.GetType().GetProperties() where p.GetValue(parameter.ParameterValue, null) != null select new { Name = p.Name, Val = HttpUtility.UrlEncode(p.GetValue(parameter.ParameterValue, null).ToString()) }; foreach (var property in properties) { controllerActionRoute.SetQueryStringParameter(property.Name, property.Val); } } }
/// <summary> /// Binds the parameter to a route. /// </summary> /// <param name="parameter">The parameter.</param> /// <param name="controllerActionRoute">The controller action route.</param> protected abstract void BindParameter(IControllerActionParameter parameter, IControllerActionRoute controllerActionRoute);
/// <summary> /// Binds the parameter to a route. /// </summary> /// <param name="parameter">The parameter.</param> /// <param name="controllerActionRoute">The controller action route.</param> protected override void BindParameter(IControllerActionParameter parameter, IControllerActionRoute controllerActionRoute) { controllerActionRoute.SetModel(parameter.ParameterValue); }
/// <summary> /// Binds the parameter to a route. /// </summary> /// <param name="parameter">The parameter.</param> /// <param name="controllerActionRoute">The controller action route.</param> protected override void BindParameter(IControllerActionParameter parameter, IControllerActionRoute controllerActionRoute) { }
/// <summary> /// Binds the specified controller action parameter. /// </summary> /// <param name="controllerActionParameter">The controller action parameter.</param> /// <param name="controllerActionRoute">The controller action route.</param> public static void Bind(IControllerActionParameter controllerActionParameter, IControllerActionRoute controllerActionRoute) { foreach (var binder in _binders.Where(x => x.CanBind(controllerActionParameter))) { binder.Bind(controllerActionParameter, controllerActionRoute); } }