• 对ViewModel自定义约束


    有时候我们常要对一些属性进行自定义的约束,可以这么做

    using ListSys.Entity;
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    
    namespace ListSys.Models
    {
        public class UserViewModel
        {
            [Display(Name = "id")]
            public string Id { get; set; }
            [Required(ErrorMessage = "姓名必填")]
            [Display(Name = "姓名")]
            public string Name { get; set; }
            [CustomValidation(typeof(UserViewModel), "UnitAccout")]
            [Required(ErrorMessage = "账号必填")]
            [MinLength(length: 6, ErrorMessage = "账号长度不能小于6位")]
            [Display(Name = "账号")]
            public string Accout { get; set; }
            [Required(ErrorMessage = "密码必填")]
            [MinLength(length: 6, ErrorMessage = "密码长度不能小于6位")]
            [Display(Name = "密码")]
            public string Password { get; set; }
            [Required(ErrorMessage ="角色必填")]
            [Display(Name = "角色")]
            public string Role { get; set; }
            [Required]
            public string Type { get; set; }
            public IEnumerable<SelectListItem> GetRoles()
            {
                List<Role> roleList = new List<Role>();
                roleList.Add(new Role() { RoleStr = "管理员", RoleVale = "admin" });
                roleList.Add(new Models.Role() { RoleStr="员工",RoleVale="employee"});
                return roleList.Select(a => new SelectListItem
                {
                    Text = a.RoleStr,
                    Value = a.RoleVale,
                });
            }
    
            //验证账号是否是唯一的
            public static ValidationResult UnitAccout(string value, ValidationContext pValidationContext)
            {
                string Accout = ((UserViewModel)pValidationContext.ObjectInstance).Accout;
                string Type= ((UserViewModel)pValidationContext.ObjectInstance).Type;
                using (var db=new zjtDBEntities())
                {
                    var userlist = db.User.Where(u => u.Accout == Accout).ToList();
                    if (userlist.Count>0 && Type.Equals("create"))
                    {
                        return new ValidationResult("该账号已注册");
                    }
                }
                return ValidationResult.Success;
            }
        }
        //角色类
        public class Role
        {
            public string RoleStr { get; set; }
            public string RoleVale { get; set; }
        }
    }
  • 相关阅读:
    实现SQL SERVER 下的PadLeft函数
    C#中String和string区别
    SQL经验分享(二)取得数据库中所有的表名、字段名以及字段属于哪个表
    JavaScript获取上传文件后缀名
    Url重写
    C#编程风格约定
    解决SharePoint 2003的爬网性能问题 之七
    [跨DB查询]查找SharePoint 2007中的Orphan Feature的SQL语句
    如何得到MOSS 2007的最近的100次爬网的信息
    解决SharePoint 2003的爬网性能问题 之八
  • 原文地址:https://www.cnblogs.com/Akeke/p/7158063.html
Copyright © 2020-2023  润新知