标签:-- uname text ret orm efault 处理 clear user
1.IBLL层
添加方法声明
public partial interface IUserInfoService:IBaseService<UserInfo> { //oh ,my baby,oh ,my baby IQueryable<UserInfo> LoagPageData(Model.Param.UserQueryParam userQueryParam); bool SetRole(int userId, List<int> roleIds); }
BLL层 方法实现 :现将原来的角色全部删除,在重新添加角色(存放在集合中)
public bool SetRole(int userId, List<int> roleIds) { var user = DbSession.UserInfoDal.GetEntities(u => u.ID == userId).FirstOrDefault(); user.RoleInfo.Clear();//全剁掉。 var allRoles = DbSession.RoleInfoDal.GetEntities(r => roleIds.Contains(r.ID)); foreach (var roleInfo in allRoles) { user.RoleInfo.Add(roleInfo);//加最新的角色。 } DbSession.SaveChanges(); return true; }
2.控制器 UserInfoController
public ActionResult SetRole(int id) { //当前要设置角色的用户 int userId = id; UserInfo user= UserInfoService.GetEntities(u => u.ID == id).FirstOrDefault(); //把所有的角色发送 到前台 ViewBag.AllRoles = RoleInfoService.GetEntities(u => u.DelFlag == delflagNormal).ToList(); //用户已经关联的角色发送到前台。 ViewBag.ExitsRoles = (from r in user.RoleInfo select r.ID).ToList(); return View(user); }
3.view层中 设置选择给用户选择角色的界面
<div> <h2>当前给用户: @Model.UName 设置角色</h2> <hr /> @{ //所有的角色 List<LTeasyOA.Model.RoleInfo> allRoles = ViewBag.AllRoles; //所有当前用户已经存在的角色 List<int> existRoleIdList = ViewBag.ExitsRoles; using (Ajax.BeginForm("ProcessSetRole", "UserInfo", new AjaxOptions() { OnSuccess = "afterSetRole" })) { <input type="hidden" name="UId" value="@Model.ID"/> foreach (var roleInfo in allRoles) { string str = "ckb_" +roleInfo.ID; if (existRoleIdList.Contains(roleInfo.ID)) { <input type="checkbox" checked="checked" value="@str" name="@str" id="@str"/> } else { <input type="checkbox" value="@str" name="@str" id="@str"/> } <label for="@str">@roleInfo.Name</label> <br /> } } } </div>
4.提交选择的角色到数据库中
public ActionResult ProcessSetRole(int UId) { //第一:当前用户id --uid //第二:所有打上对勾的 角色。 ---> list List<int> setRoleIdList =new List<int>(); foreach (var key in Request.Form.AllKeys) { if (key.StartsWith("ckb_")) { int roleId = int.Parse(key.Replace("ckb_", "")); setRoleIdList.Add(roleId); } } UserInfoService.SetRole(UId, setRoleIdList); return Content("ok"); }
权限设计数据库设计 关联表会在数据库中自动生成(RoleInfo,R_UserInfo_ActionInfo)
DbSession是数据库上下文,即联系数据库datebase和.net的中间变量,用已操作数据库的最底层
类似 Dbcontext 直接可以可取表变量
在mvc中只是简单的处理一下
BaseService中CurrentDal只能获取当前Services的类型的Dal
dbSession在这里理论是取所有的_Dal层表 ,但是在这里 只声明,未赋值,要想取到其他_Dal在这里只能在Spring.net中注册,给DbSession注册所有_DAl或者在_Service中注册只用得到的_Dal,,,,,或者直接在代码中赋值(比较好)
标签:-- uname text ret orm efault 处理 clear user
原文地址:http://www.cnblogs.com/lt123/p/7058042.html