private void SetCellValue(ICell cell, object obj) { if (obj == null) { cell.SetCellValue(""); return; } Type type = obj.GetType(); if (type == typeof(bool) || type == typeof(bool?)) { cell.SetCellValue(CommOp.ToBool(obj)); } else if (CommOp.ToDecimal(obj).ToString() == obj.ToString()) { cell.SetCellValue(CommOp.ToDouble(obj)); } else if (type == typeof(DateTime)) { cell.SetCellValue(CommOp.ToDateTime(obj)); } else { cell.SetCellValue(CommOp.ToStr(obj)); } }
/// <summary> /// 更新对象中字段的值 /// </summary> /// <param name="obj">对象</param> /// <param name="fi">字段信息</param> /// <param name="value">值</param> /// <param name="actualType">值的类型,为空时自动判断</param> static void SetFieldValue(object obj, FieldInfo fi, string value, Type actualType = null) { if (fi == null) { return; } if (String.IsNullOrEmpty(value)) { return; } if (PraserDict.ContainsKey(fi.FieldType)) { var pvalue = PraserDict[fi.FieldType].Prase(value); if (pvalue == null) { return; } fi.SetValue(obj, pvalue); return; } if (fi.FieldType == typeof(string) || fi.FieldType == typeof(object)) //字段类型为String { fi.SetValue(obj, value); } else if (fi.FieldType == typeof(int) || fi.FieldType == typeof(Int64) || fi.FieldType == typeof(Int16)) { fi.SetValue(obj, CommOp.ToLong(value)); } else if (fi.FieldType == typeof(bool)) { fi.SetValue(obj, CommOp.ToBool(value)); } else if (fi.FieldType == typeof(double) || fi.FieldType == typeof(float)) { fi.SetValue(obj, CommOp.ToDouble(value)); } else if (fi.FieldType == typeof(decimal)) { fi.SetValue(obj, CommOp.ToDecimal(value)); } else if (fi.FieldType.IsEnum) { if (fi.FieldType.IsEnumDefined(value ?? "")) { fi.SetValue(obj, Enum.Parse(fi.FieldType, value)); } } else { actualType = actualType ?? fi.FieldType; var p = JsonHelper.FormJson(value, actualType) ?? Activator.CreateInstance(actualType); fi.SetValue(obj, p); } }
/// <summary> /// 重写以处理Tips提示信息对象 /// </summary> /// <param name="filterContext"></param> protected override void OnActionExecuting(ActionExecutingContext filterContext) { if (!ModelState.IsValid) { OnModelError(CheckModelError()); } if (CurrentUser != null) { UserConfig = CurrentUser as UserConfig; } else { UserConfig = SiteManager.Get <UserConfig>(); } if (UserConfig.Theme.IsEmpty()) { var theme = WebHelper.GetCookie("theme"); UserConfig.Theme = theme; } var tempTips = TempData["Tips"] as ReturnValueWithTips; if (tempTips != null) { Tips = tempTips; } BreadCrumbList = new List <AppFunction>(); if (Function == null) { Function = AppManager.Instance.FunctionManager.Create(); } //循环构造面包屑导航 var func = Function; while (func != null) { if (func.Method == WebMethod.GET) { BreadCrumbList.Insert(0, func); } func = AppManager.Instance.FunctionManager.GetById(func.ParentId); } if (Id == 0) { Id = CommOp.ToInt(filterContext.RequestContext.GetParamsValue("id")); } if (CatalogId == 0) { CatalogId = CommOp.ToInt(filterContext.RequestContext.GetParamsValue("CatalogId")); } LogInfo.ActionName = filterContext.ActionDescriptor.ActionName; LogInfo.Browser = Request.Browser.Browser; LogInfo.BrowserVersion = CommOp.ToDecimal(Request.Browser.Version); LogInfo.ClientIP = GetIp(); LogInfo.CatalogId = CatalogId; LogInfo.LogType = Function.LogType.ToString(); LogInfo.Message = Function.Name; LogInfo.ModuleName = this.GetType().Name.Replace("Controller", ""); LogInfo.ObjectId = Id; LogInfo.OpTime = DateTime.Now; LogInfo.Platform = LogHelper.GetOSNameByUserAgent(Request.UserAgent); LogInfo.Request = (this.Request.IsAjaxRequest() ? "Ajax" : "") + this.Request.HttpMethod + " " + Request.Url.ToString(); LogInfo.UserName = User.Identity.Name; }
/// <summary> /// 将value中的值赋给对象的属性或字段 /// </summary> /// <param name="obj">对象</param> /// <param name="propName">属性名</param> /// <param name="value">值</param> /// <param name="actualType">值的类型,为空时自动判断</param> public static void SetValue(object obj, string propName, string value, Type actualType = null) { //if (String.IsNullOrEmpty(value)) return; FieldInfo fi = obj.GetType().GetField(propName, bindAttr); if (fi != null) { SetFieldValue(obj, fi, value, actualType); return; } PropertyInfo pi = GetPropertyInfo(obj, propName); if (pi == null) { return; } if (!pi.CanWrite) { return; } if (PraserDict.ContainsKey(pi.PropertyType)) { var pvalue = PraserDict[pi.PropertyType].Prase(value); if (pvalue == null) { return; } pi.SetValue(obj, pvalue, null); return; } if (pi.PropertyType == typeof(string) || pi.PropertyType == typeof(object)) { pi.SetValue(obj, value, null); } else if (pi.PropertyType == typeof(int)) { pi.SetValue(obj, CommOp.ToInt(value), null); } else if (pi.PropertyType == typeof(Int64)) { pi.SetValue(obj, CommOp.ToLong(value), null); } else if (pi.PropertyType == typeof(Int16)) { pi.SetValue(obj, (short)CommOp.ToInt(value), null); } else if (pi.PropertyType == typeof(int?)) { pi.SetValue(obj, CommOp.ToIntNull(value), null); } else if (pi.PropertyType == typeof(bool)) { pi.SetValue(obj, CommOp.ToBool(value), null); } else if (pi.PropertyType == typeof(bool?)) { pi.SetValue(obj, CommOp.ToBoolNull(value), null); } else if (pi.PropertyType == typeof(char)) { pi.SetValue(obj, CommOp.ToChar(value), null); } else if (pi.PropertyType == typeof(double) || pi.PropertyType == typeof(float)) { pi.SetValue(obj, CommOp.ToDouble(value), null); } else if (pi.PropertyType == typeof(decimal)) { pi.SetValue(obj, CommOp.ToDecimal(value), null); } else if (pi.PropertyType.IsEnum) { if (CommOp.IsNumeric(value)) { var val = CommOp.ToInt(value); if (pi.PropertyType.IsEnumDefined(val)) { pi.SetValue(obj, Enum.Parse(pi.PropertyType, val.ToString()), null); } } else { var val = CommOp.ToStr(value); if (pi.PropertyType.IsEnumDefined(val)) { pi.SetValue(obj, Enum.Parse(pi.PropertyType, val), null); } } } else if (pi.PropertyType == typeof(DateTime)) { DateTime dt = CommOp.ToDateTime(value); if (dt == default(DateTime)) { return; } pi.SetValue(obj, dt, null); } else if (pi.PropertyType == typeof(DateTime?)) { DateTime?dt = CommOp.ToDateTimeNull(value); pi.SetValue(obj, dt, null); } else { actualType = actualType ?? pi.PropertyType; var p = JsonHelper.FormJson(value, actualType) ?? Activator.CreateInstance(actualType); try { pi.SetValue(obj, p, null); } catch { throw; } } }