/// <summary> /// 反序列化输入流 /// </summary> /// <param name="requestText"></param> /// <returns></returns> public static WbapRequest DeserializeRequest(string requestText) { WbapRequest wbapRequest = new WbapRequest(); JObject jObj = JObject.Parse(requestText); wbapRequest.PageName = jObj.Value <string>("PageName"); wbapRequest.ActionId = jObj.Value <string>("ActionId"); wbapRequest.Url = jObj.Value <string>("Url"); JObject elementBinds = (JObject)jObj.Value <JObject>("ElementBinds"); if (elementBinds == null) { return(wbapRequest); } wbapRequest.Step = jObj.Value <int>("Step"); foreach (JProperty elementBind in elementBinds.Properties()) { string elementName = elementBind.Name; if (WbapDataBody.ElementIsDataType(elementName, WbapDataType._List)) { string s = elementBind.Value.ToString(); WbapList dataList = JsonConvert.DeserializeObject <WbapList>(s); wbapRequest.ElementBinds.Add(elementBind.Name, dataList); } else if (WbapDataBody.ElementIsDataType(elementName, WbapDataType._String)) { string value = elementBind.Value.Value <string>(); wbapRequest.ElementBinds.Add(elementName, value); } } return(wbapRequest); }
/// <summary> ///根据tableName参数,为客户端请求,建立Table的框架格式。 /// </summary> /// <param name="fieldName"></param> /// <param name="schema"></param> internal void ImportTableSchema(string tableName, WbdlSchema schema) { DataSourceSchema tableSchema = DataSourceSchemaContainer.Instance().GetItem(tableName); string keyField = tableSchema.PrimaryKeys + "_Key"; foreach (FieldBindSchema fieldBind in schema.FieldBinds) { if (fieldBind.TableId.Equals(tableName, StringComparison.OrdinalIgnoreCase)) { if (!this.ContainsKey(fieldBind.Id)) { this.Add(fieldBind.Id, ""); } // this. } } if (!this.ContainsKey(keyField)) { this.Add(keyField, ""); } foreach (DataListBindSchema listBind in schema.DataListBinds) { string listKey = listBind.Id + WbapDataType._List.ToString(); WbapList dataList = null; if (this.ContainsKey(listKey)) { dataList = this[listKey] as WbapList; } else { dataList = new WbapList(); this.Add(listBind.Id + WbapDataType._List.ToString(), dataList); } foreach (FieldBindSchema fieldBind in listBind.Columns) { if (fieldBind.TableId.Equals(tableName, StringComparison.OrdinalIgnoreCase)) { if (dataList == null) { dataList = new WbapList(); this.Add(listBind.Id + WbapDataType._List.ToString(), dataList); } dataList.Columns.Add(fieldBind.Id); } } dataList.Columns.Add(keyField); } }