Ejemplo n.º 1
0
        /// <summary>
        /// 更新对象属性到数据库中
        /// </summary>
        /// <param name="info">指定的对象</param>
        /// <param name="id">主键ID的值</param>
        /// <returns>执行成功返回<c>true</c>,否则为<c>false</c>。</returns>
        public virtual ActionResult Update(string Id, FormCollection formValues)
        {
            //检查用户是否有权限,否则抛出MyDenyAccessException异常
            base.CheckAuthorized(authorizeKeyInfo.UpdateKey);

            T obj = baseBLL.FindById(Id);

            if (obj != null)
            {
                //遍历提交过来的数据(可能是实体类的部分属性更新)
                foreach (string key in formValues.Keys)
                {
                    string value = formValues[key];
                    System.Reflection.PropertyInfo propertyInfo = obj.GetType().GetProperty(key);
                    if (propertyInfo != null)
                    {
                        try
                        {
                            // obj对象有key的属性,把对应的属性值赋值给它(从字符串转换为合适的类型)
                            //如果转换失败,会抛出InvalidCastException异常
                            propertyInfo.SetValue(obj, Convert.ChangeType(value, propertyInfo.PropertyType), null);
                        }
                        catch { }
                    }
                }
            }

            ReturnResult rr = new ReturnResult();

            try
            {
                if (Update(Id, obj))
                {
                    rr.ErrorCode    = 0;
                    rr.ErrorMessage = "修改记录成功";
                    rr.ErrorPath    = "BusinessController->Update(string Id, FormCollection formValues)";
                    rr.LogLevel     = (short)LogLevel.LOG_LEVEL_INFO;
                }
                else
                {
                    rr.ErrorCode    = 000016;
                    rr.ErrorMessage = dicErrInfo["E000016"].ChineseName;
                    rr.ErrorPath    = "BusinessController->Update(string Id, FormCollection formValues)";
                    rr.LogLevel     = dicErrInfo["E000016"].LogLevel;
                }
            }
            catch (Exception ex)
            {
                LogHelper.WriteLog(LogLevel.LOG_LEVEL_CRIT, ex, typeof(BusinessController <B, T>));

                rr.ErrorCode    = 000017;
                rr.ErrorMessage = dicErrInfo["E000017"].ChineseName;
                rr.ErrorPath    = "BusinessController->Update(string Id, FormCollection formValues)";
                rr.LogLevel     = dicErrInfo["E000017"].LogLevel;
            }

            return(ToJsonContent(rr));
        }
Ejemplo n.º 2
0
 /// <summary>
 /// 查询数据库,检查是否存在指定ID的对象(用于字符型主键)
 /// </summary>
 /// <param name="key">对象的ID值</param>
 /// <returns>存在则返回指定的对象,否则返回Null</returns>
 public virtual T FindById(string key)
 {
     return(baseBLL.FindById(key));
 }