学用MVC4做网站五:文章

一般来说一个网站最主要的部分就是文章,实现了文章功能网站的核心也就出来了。今天开始做文章功能,首先文章应包含以下字段。

字段

名称

类型

必填

默认值

说明

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看下效果

image

=============================================================

代码随后上传

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

posted @ 2013-01-20 21:17  洞庭夕照  阅读(5717)  评论(5编辑  收藏  举报