用戶組這塊要實現的功能如下:
二、用戶組
用戶組類型應該有匿名,受限,正常,和特殊幾種類型。
設計這些類型的目的是為了以后權限管理做准備,以后權限設計這塊計划是以用戶所在的用戶組來划分權限。在這里設計這幾種用戶類型的目的如下
匿名類型-指未登錄的用戶(游客)用戶組。本來不計划設置這個類型的,正常來說這種類型的用戶組應該只有一個(匿名用戶組),匿名用戶組是一個虛的,在系統中沒用注冊的用戶屬於這個組,這個組的目的是在系統中給哪些未登錄也可以操作的部分設置權限。本來想把匿名用戶組划到受限用戶組類型里,后來覺得匿名用戶是虛擬的,而受限制的用戶是系統中真是存在的用戶,所以還是單獨分出來比較清晰。
受限類型-是系統中被限制正常操作的一組用戶。像系統如果啟用Email驗證的話,未驗證Email的用戶應該數據這一組,還有系統中由於某些原因被懲罰,被禁言等用戶組屬於這種類型
正常類型-是系統中注冊后正常使用的用戶組類型。這種類型的用戶組應該最多,可以用來區分用戶等功能,像錄入員,編輯等等,也可以想論壇一樣表示用戶的等級,可以設計成達到什么條件自動升到下一級一樣。
特殊類型-指系統里有特權的組,像VIP、貴賓、特約嘉賓之類的。現在不是哪里都講vip、講特權嘛,所以這個也一定要考慮,這種用戶要管理員后台將用戶調整過來,用戶自己是不能升級到的。
把類型設計成枚舉
public enum UserGroupType { Anonymous, Limited, Normal, Special }
添加UserGroup模型類
public class UserGroup { [Key] public int UserGroupId { get; set; } /// <summary> /// 用戶組類型【True-系統,False-用戶定義。】 /// </summary> [Display(Name="用戶組類型")] [Required(ErrorMessage = "×")] public UserGroupType Type { get; set; } /// <summary> /// 用戶組名稱 /// </summary> [Display(Name="用戶組名稱",Description="2-12個字符。")] [Required(ErrorMessage = "×")] [StringLength(12,MinimumLength=2,ErrorMessage = "×")] public string Name { get; set; } /// <summary> /// 說明 /// </summary> [Display(Name="說明",Description="最多50個字符。")] [StringLength(50,ErrorMessage = "×")] public string Description { get; set; } }
NineskyContext中添加public DbSet<UserGroup> UserGroups
using Ninesky.Models; using System.Data.Entity; namespace Ninesky.Repository { public class NineskyContext:DbContext { public DbSet<User> Users { get; set; } public DbSet<UserGroup> UserGroups { get; set; } public NineskyContext() : base() { Database.CreateIfNotExists(); } } }
然后添加控制器UserGroupController
在用戶組中添加 [添加用戶組],[修改用戶組],[刪除用戶組],[用戶組列表]的空Action。
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using Ninesky.Models; namespace Ninesky.Controllers { public class UserGroupController : Controller { /// <summary> /// 添加用戶組 /// </summary> /// <returns></returns> public ActionResult Add() { return View(); } [HttpPost] public ActionResult Add(UserGroup userGroup) { return View(); } /// <summary> /// 修改用戶組 /// </summary> /// <param name="GroupId">用戶組Id</param> /// <returns></returns> public ActionResult Edit(int GroupId) { return View(); } [HttpPost] public ActionResult Eidt(UserGroup userGroup) { return View(); } /// <summary> /// 刪除用戶組 /// </summary> /// <param name="GroupId">用戶組Id</param> /// <returns></returns> public ActionResult Delele(int GroupId) { return View(); } [HttpPost] public ActionResult Delete(int GroupId) { return View(); } /// <summary> /// 用戶組列表 /// </summary> /// <param name="groupType">用戶組類型</param> /// <returns></returns> public ActionResult List(int groupType) { return View(); } } }
在Repository文件夾添加UserGroupRepository類,該類繼承自RepositoryBase<UserGroup>代碼如下:
using Ninesky.Models; using System.Linq; namespace Ninesky.Repository { public class UserGroupRepository:RepositoryBase<UserGroup> { /// <summary> /// 添加用戶組 /// </summary> /// <param name="userGroup"></param> /// <returns></returns> public override bool Add(UserGroup userGroup) { dbContext.UserGroups.Add(userGroup); if (dbContext.SaveChanges() > 0) return true; else return false; } /// <summary> /// 更新用戶組 /// </summary> /// <param name="userGroup"></param> /// <returns></returns> public override bool Update(UserGroup userGroup) { dbContext.UserGroups.Attach(userGroup); dbContext.Entry<UserGroup>(userGroup).State = System.Data.EntityState.Modified; if (dbContext.SaveChanges() > 0) return true; else return false; } /// <summary> /// 刪除用戶組 /// </summary> /// <param name="userGroupId"></param> /// <returns></returns> public override bool Delete(int userGroupId) { dbContext.UserGroups.Remove(dbContext.UserGroups.SingleOrDefault(ug=>ug.UserGroupId == userGroupId)); if(dbContext.SaveChanges()>0) return true; else return false; } /// <summary> /// 查找制定用戶組 /// </summary> /// <param name="UserGropuId"></param> /// <returns></returns> public override UserGroup Find(int UserGropuId) { return dbContext.UserGroups.SingleOrDefault(ug => ug.UserGroupId == UserGropuId); } /// <summary> /// 用戶組列表 /// </summary> /// <returns></returns> public IQueryable<UserGroup> List() { return dbContext.UserGroups; } /// <summary> /// 用戶組列表 /// </summary> /// <param name="userGroupType">用戶組類型</param> /// <returns></returns> public IQueryable<UserGroup> List(int userGroupType) { return dbContext.UserGroups.Where(ug => ug.Type == (UserGroupType)userGroupType); } } }
================================
2011-11-15用戶組部分截止到刪除用戶組的源碼下載
http://pan.baidu.com/share/link?shareid=118238&uk=2198133459