zoukankan      html  css  js  c++  java
  • 对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; }
        }
    }
  • 相关阅读:
    C#中的控件命名规范
    c# 执行javascript 脚本 并获得变量值 (winform与javascript交互 )
    C# Socket 实现的淘宝秒杀器(抢拍器)
    ASP函数 获取域名解析后的IP 获取远程网页的HTML代码
    C# 使用17方法编写Hello World程序(语法深度)
    框架内数据的打印。。。。
    有点厌恶写程序.....
    漂流的自白
    Asp.net中的页面乱码的问题
    在js 中根据 url 获取其参数
  • 原文地址:https://www.cnblogs.com/Akeke/p/7158063.html
Copyright © 2011-2022 走看看