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); }
/// <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)); }
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); } }
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); }
//=== 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); }