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