public static void WriteLog(ControllerContext controllerContext, ViewDataDictionary viewData)
        {
            var cc = controllerContext.Controller.ControllerContext;

            var category = GetCategory(controllerContext);
            var title = GetTitle(controllerContext);

            var log = new ActionLog
            {
                Controller = cc.RouteData.GetRequiredString("controller"),
                Action = cc.RouteData.GetRequiredString("action"),
                Url = controllerContext.HttpContext.Request.Path,
                CreatedAt = DateTime.Now,
                CreatedBy = "SYSTEM",
                Address = controllerContext.HttpContext.Request.UserHostAddress,
                Actor = TryGetUserName(controllerContext),
                Method = controllerContext.HttpContext.Request.HttpMethod,
                Category = GetCategory(controllerContext),
                Title = title.Equals(category) ? "查询" : title,
                Result = TryGetResult(controllerContext),
                ModelId = cc.RouteData.Values.ContainsKey("id") ? cc.RouteData.GetRequiredString("id") : null,
                Description = viewData.ContainsKey(Const.ToLogMessage) ? viewData[Const.ToLogMessage].ToString() : null
            };

            if (log.Description == null && viewData.ContainsKey(Const.ToLogModel))
            {
                // 取得描述
                var model = viewData.ContainsKey(Const.ToLogModel) ? viewData[Const.ToLogModel] : viewData.Model;
                if (model != null)
                {
                    if (!model.GetType().IsGenericType)
                    {
                        log.Description = model.Print();
                    }
                    else
                    {
                        var objs = (IEnumerable<object>)model;
                        log.Description = string.Join(";" + Environment.NewLine, objs.Select(m => m.Print()));
                    }

                }
            }

            using (var ds = new SessionFactory().OpenSession())
            {
                if (!ds.Create(log))
                {
                    Log.Error("记录日志失败:{0}", log.ToString());
                }
            }
        }
 //#region 通用控制器模块
 //public ActionResult CommonCreate<TModel>(FormCollection collection,
 //    Func<Session, bool> onTouch = null,
 //    Func<TModel, Session, bool> beforePersistance = null,
 //    Func<TModel, Session, bool> afterPersistance = null
 //    ) where TModel : class, new()
 //{
 //    using (var session = new SessionFactory().OpenSession())
 //    {
 //        try
 //        {
 //            session.BeginTransaction();
 //            if (onTouch != null && !onTouch(session))
 //            {
 //                return Close();
 //            }
 //            var model = new TModel();
 //            TryUpdateModel(model, collection);
 //            if (!ModelState.IsValid)
 //            {
 //                // ReSharper disable Mvc.ViewNotResolved
 //                return View(model);
 //                // ReSharper restore Mvc.ViewNotResolved
 //            }
 //            if (beforePersistance != null && !beforePersistance(model, session))
 //            {
 //                return Close();
 //            }
 //            if (typeof(TModel).GetInterface("IDboFollow") == typeof(IDboFollow))
 //            {
 //                model.SetPropertyValue("CreatedAt", DateTime.Now);
 //                model.SetPropertyValue("CreatedBy", CurrentAccountNo);
 //            }
 //            if (session.Create(model))
 //            {
 //                if (afterPersistance == null || afterPersistance(model, session))
 //                {
 //                    session.Commit();
 //                    FlashSuccess("{0}创建成功", SchemaHelper.GetObjectName<TModel>());
 //                    return Close();
 //                }
 //            }
 //            session.Rollback();
 //            FlashFailure("创建{0}失败!", SchemaHelper.GetObjectName<TModel>());
 //            return View(model);
 //        }
 //        catch (Exception ex)
 //        {
 //            session.Rollback();
 //            FlashError("发生错误:{0}", ex.Message);
 //            return View();
 //        }
 //    }
 //}
 //#endregion
 protected void CreateLog(string result = null, string description = null)
 {
     using (var session = new SessionFactory().OpenSession())
     {
         var log = new ActionLog
                       {
                           Controller = ControllerName,
                           Action = ActionName,
                           ModelId = ModelId,
                           UserId = CurrentAccountId,
                           Url = Url,
                           CreatedAt = DateTime.Now,
                           CreatedBy = "SYSTEM",
                           Address = Request.UserHostAddress,
                           Actor = CurrentAccountNo,
                           Category = GetCategory(),
                           Title = GetTitle(),
                           Result = result,
                           Description = description
                       };
         if (!session.Create(log))
         {
             Log.Error("记录日志失败:{0}", log.ToString());
         }
     }
 }