public BaseController() { IEntityTool iEntityTool = ToolFactory.CreateIEntityTool(); if (System.Web.HttpContext.Current.Request.QueryString.Count != 0) { var queryStringBinder = iEntityTool.CreateINVCollectionBinder(System.Web.HttpContext.Current.Request.QueryString); queryStringBinder.Bind <BaseController>(this); } if (System.Web.HttpContext.Current.Request.Form.Count != 0) { var formBinder = iEntityTool.CreateINVCollectionBinder(System.Web.HttpContext.Current.Request.Form); formBinder.Bind <BaseController>(this); } }
/// <summary> /// 源路由数据转换运行方法参数 /// </summary> /// <param name="formRouteData">源路由数据</param> /// <returns>运行方法参数</returns> protected virtual object[] GetParamsFormFormRouteData(MethodFormRouteData formRouteData) { if (this.ParameterInfos.Count == 0) { return(null); } var result = new List <object>(ParameterInfos.Count); foreach (var parameterInfo in this.ParameterInfos) { if (IsHasParamterInFormRouteData(formRouteData, parameterInfo)) { if (parameterInfo.ParameterType.IsClass && typeof(IEnumerable).IsAssignableFrom(parameterInfo.ParameterType) == false) { var startWidthPath = parameterInfo.Name + "."; NameValueCollection nvc = new NameValueCollection(); foreach (var key in formRouteData.Params.AllKeys) { if (key.StartsWith(startWidthPath, StringComparison.OrdinalIgnoreCase)) { var propertyPath = key.Substring(startWidthPath.Length); foreach (var value in formRouteData.Params.GetValues(key)) { nvc.Add(propertyPath, value); } } } var binder = IEntityTool.CreateINVCollectionBinder(nvc); var paramValue = binder.Bind(parameterInfo.ParameterType); result.Add(paramValue); } else { var srcValue = formRouteData.Params.GetValues(parameterInfo.Name); object paramValue = null; try { paramValue = ProgramTool.ChanageType(srcValue, parameterInfo.ParameterType); } catch { if (parameterInfo.DefaultValue != System.DBNull.Value) { paramValue = parameterInfo.DefaultValue; } } result.Add(paramValue); } } else { if (parameterInfo.DefaultValue != System.DBNull.Value) { result.Add(parameterInfo.DefaultValue); } else { result.Add(null); } } } return(result.ToArray()); }