示例#1
0
        private (FapDynamicObject mainData, Dictionary <string, IEnumerable <FapDynamicObject> > childsData) BuilderData(string tableName, FormValueProvider formValueProviders)
        {
            var columnList = _dbContext.Columns(tableName);
            var mainDic    = formValueProviders.GetKeysFromPrefix("mainData");
            FapDynamicObject mainObject = new FapDynamicObject(columnList);

            foreach (var cell in mainDic)
            {
                mainObject.SetValue(cell.Key, formValueProviders.GetValue(cell.Value).FirstValue);
            }
            var childDicList = formValueProviders.GetKeysFromPrefix("childDataList");
            Dictionary <string, IEnumerable <FapDynamicObject> > childDataDic = null;

            childDataDic = new Dictionary <string, IEnumerable <FapDynamicObject> >();
            foreach (var row in childDicList)
            {
                IList <FapDynamicObject> list = new List <FapDynamicObject>();
                var tables = formValueProviders.GetKeysFromPrefix(row.Value);

                string tn      = formValueProviders.GetValue(tables["tn"]).FirstValue;
                var    dicData = formValueProviders.GetKeysFromPrefix(tables["data"]);
                foreach (var data in dicData)
                {
                    FapDynamicObject cData = new FapDynamicObject(_dbContext.Columns(tn));
                    foreach (var dataDic in formValueProviders.GetKeysFromPrefix(data.Value))
                    {
                        cData.SetValue(dataDic.Key, formValueProviders.GetValue(dataDic.Value).FirstValue);
                    }
                    list.Add(cData);
                }
                childDataDic.TryAdd(tn, list);
            }
            return(mainObject, childDataDic);
        }
示例#2
0
        /// <summary>
        /// 获取提交的所有参数
        /// </summary>
        /// <param name="ivp"></param>
        /// <returns></returns>
        string GetAllParam(IValueProvider ivp)
        {
            Dictionary <string, string> Qsvp = new Dictionary <string, string>();
            Dictionary <string, string> Fvp  = new Dictionary <string, string>();
            ValueProviderCollection     vp   = (ValueProviderCollection)ivp;

            foreach (var v in vp)
            {
                Type t = v.GetType();
                if (t.ToString() == "System.Web.Mvc.QueryStringValueProvider")
                {
                    QueryStringValueProvider qvp = (QueryStringValueProvider)v;
                    foreach (var keys in qvp.GetKeysFromPrefix(""))
                    {
                        Qsvp.Add(keys.Key, qvp.GetValue(keys.Key).AttemptedValue);
                    }
                }
                if (t.ToString() == "System.Web.Mvc.FormValueProvider")
                {
                    FormValueProvider qvp = (FormValueProvider)v;
                    foreach (var keys in qvp.GetKeysFromPrefix(""))
                    {
                        Fvp.Add(keys.Key, qvp.GetValue(keys.Key).AttemptedValue);
                    }
                }
            }
            var param = new
            {
                QueryString = Qsvp,
                FormValue   = Fvp
            };

            return(Newtonsoft.Json.JsonConvert.SerializeObject(param));
        }
示例#3
0
        private IEnumerable <FapDynamicObject> GetRows(FormValueProvider formValueProvider, IEnumerable <FapColumn> columns)
        {
            IDictionary <string, string> rowsDic = formValueProvider.GetKeysFromPrefix("rows");

            foreach (var row in rowsDic)
            {
                FapDynamicObject keyValues = new FapDynamicObject(columns);
                foreach (var cell in formValueProvider.GetKeysFromPrefix(row.Value))
                {
                    keyValues.SetValue(cell.Key, formValueProvider.GetValue(cell.Value));
                }
                yield return(keyValues);
            }
        }
示例#4
0
        static T UpdateJsonModel <T>(FormValueProvider form, string modelName) where T : class, new()
        {
            var modelValue = form.GetValue(modelName);

            if (modelValue == null)
            {
                throw new ArgumentNullException(nameof(modelName), $"Could not find form value with key: {modelName}");
            }

            var json  = modelValue.ToString();
            var model = JsonSerializer.Deserialize <T>(json, new JsonSerializerOptions {
                PropertyNameCaseInsensitive = true
            });

            return(model);
        }
示例#5
0
        //=== Helpers

        /// <summary> Looks for value provider result. </summary>
        private object FindValue(ModelBindingContext bindingContext)
        {
            ValueProviderCollection vpc = bindingContext.ValueProvider as ValueProviderCollection;

            foreach (object vp in vpc)
            {
                if (vp is FormValueProvider)
                {
                    FormValueProvider fvp = (FormValueProvider)vp;

                    ValueProviderResult vpr = fvp.GetValue(bindingContext.ModelName);

                    if (vpr != null)
                    {
                        return(vpr);
                    }
                }
                else if (vp is DictionaryValueProvider <object> )
                {
                    DictionaryValueProvider <object> dvp = (DictionaryValueProvider <object>)vp;

                    ValueProviderResult vpr = dvp.GetValue(bindingContext.ModelName);

                    if (vpr != null)
                    {
                        return(vpr);
                    }
                    else if (dvp.ContainsPrefix(bindingContext.ModelName))
                    {
                        return(vp);
                    }
                }
            }

            return(null);
        }