示例#1
0
        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);
            }
        }
示例#2
0
        /// <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());
        }