上一篇簡單的實現了一下登入的功能,這一篇首先把背景架構撘一撘。
搭架構
還是使用上文提到的模板,該模板使用frameset架構,關於在ASP.NET MVC下如何使用frameset架構,我推薦大家看一篇文章在ASP.NET MVC下使用frameset架構!。
上一篇中,我們在View檔案夾下建立了一個Admin檔案夾,所以,我們先建立一個AdminController,添加如下代碼:
public class AdminController : Controller{ // // GET: /Admin/ [Authorize] public ActionResult Index() { return View("Index"); } [Authorize] public ActionResult Top() { return View("Top"); } [Authorize] public ActionResult Left() { return View("Left"); }}
相對應建立如下視圖:
Index.cshtml裡面使用frameset引用Top.cshtml和Left.cshtml,方式如下,具體可以看上面那篇文章。
<frame src="@Url.Action("Top")" noresize="noresize" frameborder="NO" name="topFrame" scrolling="no" marginwidth="0" marginheight="0" target="main" />
下面還需要修改一下AccountController裡面的LogOn action,具體如下:
//// POST: /Account/LogOn[HttpPost]public ActionResult LogOn(LogOnViewModel model){ if (ModelState.IsValid) { if (context.Users.Any(u => u.UserName == model.UserName && u.Password == model.Password)) { FormsAuthentication.SetAuthCookie(model.UserName, false); //下面是修改的地方 return RedirectToAction("Index", "Admin"); } else { ModelState.AddModelError("", "使用者名稱或密碼不正確"); } } return View(model);}
這樣架構大體就搭好了,效果如下:
實現使用者管理
要實現使用者管理,我們先修改LiveText.Domain項目中User實體,因為我們是用Code-First產生的資料庫,如果修改了實體,再一次運行就會出錯,所以第一件要做的事就是在LiveText.WebUI項目中的Model檔案夾中建立一個LiveTextDbInitializer類,用於當實體發生變化時重建資料庫。
public class LiveTextDbInitializer : DropCreateDatabaseIfModelChanges<LiveTextDbContext>{ protected override void Seed(LiveTextDbContext context) { context.Users.Add(new Domain.Entities.User { UserName = "admin", Password = "admin" }); base.Seed(context); }}
然後在Global.asax中的 Application_Start方法中註冊一下:
Database.SetInitializer(new LiveTextDbInitializer());
下面我們就可以修改User實體了。如果一開始都寫好的話,現在就不用修改了,麻煩,。修改後的代碼如下:
public class User{ /// <summary> /// 使用者編號 /// </summary> public virtual int UserID { get; set; } /// <summary> /// 使用者名稱 /// </summary> [Required(ErrorMessage = "不可為空")] [StringLength(30)] [Display(Name = "使用者名稱")] public virtual string UserName { get; set; } /// <summary> /// 使用者密碼 /// </summary> [Required(ErrorMessage = "不可為空")] [DataType(DataType.Password)] [StringLength(30, MinimumLength = 5, ErrorMessage = "密碼最短為5個字元")] [Display(Name = "密碼")] public virtual string Password { get; set; }}
接下來,我們建立一個UserController,按照所示選擇。
最後,將Left.cshtml裡面的超連結改一下:
<li><a href="@Url.Action("Create", "User")" target="main">添加使用者</a></li> <li><a href="@Url.Action("Index", "User")" target="main">使用者列表</a></li>
OK,再運行一下程式:
沒有加樣式,所以很難看
實現文字直播管理
首先,實作類別別管理。
修改Category實體。
public class Category{ /// <summary> /// 類別編號 /// </summary> public virtual int CategoryID { get; set; } /// <summary> /// 類別名稱 /// </summary> [Required(ErrorMessage = "不可為空")] [Display(Name = "類別名稱")] public virtual string Name { get; set; } /// <summary> /// 標題集合 /// </summary> public virtual List<Title> Titles { get; set; }}
建立CategoryController。
Now,類別管理完成了,看一下運行效果:
第二,實現標題管理
首先修改Title實體。
public class Title{ /// <summary> /// 標題編號 /// </summary> public virtual int TitleID { get; set; } /// <summary> /// 類別編號 /// </summary> [Required(ErrorMessage = "類別不可為空")] public virtual int CategoryID { get; set; } /// <summary> /// 標題名稱 /// </summary> [Required(ErrorMessage = "標題不可為空")] [Display(Name = "標題名稱")] public virtual string Name { get; set; } /// <summary> /// 所屬類別 /// </summary> public virtual Category Category { get; set; } /// <summary> /// 文字集合 /// </summary> public virtual List<Text> Texts { get; set; }}
建立TitleController。
這樣就完成了,看一下運行效果:
實現文字管理
首先修改Text實體。
public class Text{ /// <summary> /// 文字編號 /// </summary> public virtual int TextID { get; set; } /// <summary> /// 標題編號 /// </summary> [Required(ErrorMessage = "標題不可為空")] [Display(Name = "所屬標題")] public virtual int TitleID { get; set; } /// <summary> /// 發表人 /// </summary> [Required(ErrorMessage = "發表人不可為空")] [Display(Name = "發表人")] public virtual string Prolocutor { get; set; } /// <summary> /// 發表內容 /// </summary> [Required(ErrorMessage = "發表內容不可為空")] [Display(Name = "發表內容")] public virtual string ProContent { get; set; } /// <summary> /// 標題 /// </summary> [Display(Name = "發表時間")] public virtual DateTime ProDate { get; set; } /// <summary> /// 所屬標題 /// </summary> [Display(Name = "所屬標題")] public virtual Title Title { get; set; }}
建立TextController。
OK,看一下運行結果:
今天到此為止,下一篇用JQuery在前台顯示。