MVC中使用EF的技巧集(二)——分部验证

1、从数据库生成模型后,再次更新模型时,之前设置的验证规则会丢失。

解决方法:在Models文件夹中新建一个空白类,把它命名为shujuyanzh.cs(类名可以自定),然后把Models中自动生成的模型中的xxxx.tt文件中的与数据库中表同名的.cs中的内容复制到shujuyanzh.cs中并对相关各项添加数据规则。

内容示例如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;

namespace 档案管理.Models
{
    public class danganyz
    {
        [Required(ErrorMessage="此项必填")]
        [StringLength(10)]
        [Display(Name = "档案类型")]
        public string 档案类型 { get; set; }


        [Required(ErrorMessage="此项必填")]
        [StringLength(100)]
        [Display(Name = "档案名称")]
        public string 档案名称 { get; set; }



        [Required(ErrorMessage="此项必填")]
        [Range(1,500)]
        [Display(Name = "档案页数")]
        public int 档案页数 { get; set; }


        [Required(ErrorMessage="此项必填")]
        [Range(0, 50)]
        [Display(Name = "原件份数")]
        public int 原件份数 { get; set; }



        [Required(ErrorMessage="此项必填")]
        [Range(0, 50)]
        [Display(Name = "复印件数")]
        public int 复印件数 { get; set; }


        [Required(ErrorMessage="此项必填")]
        [StringLength(20)]
        [Display(Name = "入档人员")]
        public string 入档人员 { get; set; }



        [Required(ErrorMessage="此项必填")]
        [Display(Name="入档时间")]
        public System.DateTime 入档时间 { get; set; }



        [Required(ErrorMessage="此项必填")]
        [StringLength(10)]
        [Display(Name = "存放柜号")]
        public string 存放柜号 { get; set; }


        [Required(ErrorMessage="此项必填")]
        [StringLength(10)]
        [Display(Name = "存放盒号")]
        public string 存放盒号 { get; set; }


        [Required(ErrorMessage="此项必填")]
        [StringLength(10)]
        [Display(Name = "存放袋号")]
        public string 存放袋号 { get; set; }


        [StringLength(255)]
        [Display(Name = "档案备注")]
        public string 档案备注 { get; set; }
    }
}

2.然后在Models文件夹中新建一个空白类yanzhengguanli.cs(这里类名可以自定),把自动生成的类删除掉,并加入如下代码,请注意每个类被标记为partial

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;

namespace 档案管理.Models
{
       [MetadataType(typeof(danganyz))]
        public partial class dangan { }
}

这样在你根据数据库更新模型的时候,就不会丢失已经设置了的验证规则,更新以后你需要对新添加的字段在shujuyanzh.cs添加验证规则。好处是显而易见的。

3、在添加控制器及视图。

posted @ 2015-05-21 14:45  沉默种子  阅读(475)  评论(0编辑  收藏  举报