一般來說一個網站最主要的部分就是文章,實現了文章功能網站的核心也就出來了。今天開始做文章功能,首先文章應包含以下字段。
字段 |
名稱 |
類型 |
必填 |
默認值 |
說明 |
ArtickeId |
文章id |
Int[key] |
是 |
||
CommonModelId |
公共模型Id |
Int |
是 |
||
Source |
來源 |
string(255) |
|||
Author |
作者 |
string(50) |
|||
Intro |
摘要 |
string(255) |
|||
Content |
內容 |
string |
是 |
||
CommonModel |
公共模型數據 |
CommonModel |
virtual |
在Models文件夾點右鍵添加Article模型
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace Ninesky.Models { /// <summary> /// 文章模型 /// </summary> public class Article { [Key] public int ArticleId { get; set; } /// <summary> /// 公共模型id /// </summary> [Display(Name="公共模型編號")] [Required(ErrorMessage="×")] public int CommonModelId { get; set; } /// <summary> /// 來源 /// </summary> [Display(Name="來源")] [StringLength(255, ErrorMessage = "×")] public string Source { get; set; } /// <summary> /// 作者 /// </summary> [Display(Name = "作者")] [StringLength(50, ErrorMessage = "×")] public string Author { get; set; } /// <summary> /// 摘要 /// </summary> [NotMapped] [Display(Name="摘要")] public string Intro { get; set; } /// <summary> /// 內容 /// </summary> [Display(Name="內容")] [Required(ErrorMessage = "×")] [DataType(DataType.Html)] public string Content { get; set; } public virtual CommonModel CommonModel { get; set; } } }
在Repository文件夾右鍵添加ArticleRepository類,繼承自RepositoryBase<Article>。重寫Add、update、delete、find函數。
using Ninesky.Models; using System.Linq; namespace Ninesky.Repository { public class ArticleRepository:RepositoryBase<Article> { /// <summary> ///添加文章 /// </summary> /// <param name="article">文章</param> /// <returns></returns> public override bool Add(Article article) { dbContext.Articles.Add(article); return dbContext.SaveChanges() > 0; } /// <summary> /// 更新文章 /// </summary> /// <param name="article">文章</param> /// <returns></returns> public override bool Update(Article article) { dbContext.Articles.Attach(article); dbContext.Entry<Article>(article).State = System.Data.EntityState.Modified; dbContext.Entry<CommonModel>(article.CommonModel).State = System.Data.EntityState.Modified; return dbContext.SaveChanges() > 0; } /// <summary> /// 刪除文章 /// </summary> /// <param name="Id">文章id</param> /// <returns></returns> public override bool Delete(int Id) { dbContext.Articles.Remove(dbContext.Articles.SingleOrDefault(a => a.ArticleId == Id)); return dbContext.SaveChanges() > 0; } /// <summary> /// 查找文章 /// </summary> /// <param name="Id">文章id</param> /// <returns></returns> public override Article Find(int Id) { return dbContext.Articles.AsNoTracking().Include("CommonModel").SingleOrDefault(a => a.ArticleId == Id); } } }
在Controllers文件夾上右鍵添加ArticleController
using Ninesky.Models; using Ninesky.Repository; using System.Web.Mvc; namespace Ninesky.Controllers { public class ArticleController : Controller { ArticleRepository articleRsy; CommonModelRepository cModelRsy; public ArticleController() { articleRsy = new ArticleRepository(); }
}
}
在控制器中添加[UserDefault]action。作為用戶登錄后文章管理的默認頁
/// <summary> /// 用戶默認頁 /// </summary> [UserAuthorize] public ActionResult UserDefault() { return View(); }
右鍵添加視圖
@{ ViewBag.Title = "文章管理"; Layout = "~/Views/Shared/_User.cshtml"; } <div class="workspace"> <div class="inside"> <div class="notebar"> <img alt="" src="~/Content/Default/User/Images/Icon/Article_16.png" />您現在的位置: 文章管理 </div> </div> </div> <div class="left">@Html.Partial("PartialUserNavMenus")</div> <div class="clear"></div>
F5看下效果
=============================================================
代碼隨后上傳
2013-1-20代碼:http://pan.baidu.com/share/link?shareid=204196&uk=2198133459
2013-1-28日5.5“全部文章”代碼:http://pan.baidu.com/share/link?shareid=226838&uk=2198133459
2013-2-5日5.7“顯示文章”代碼http://pan.baidu.com/share/link?shareid=255289&uk=2198133459