对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; }
    }
}
时间: 2024-10-10 07:23:12

对ViewModel自定义约束的相关文章

MVC 5 属性路由中添加自己的自定义约束

介绍约束 ASP.NET MVC和web api 同时支持简单和自定义约束,简单的约束看起来像: routes.MapRoute("blog", "{year}/{month}/{day}", new { controller = "blog", action = "index" }, new { year = @"\d{4}", month = @"\d{2}", day = @&qu

MVC路由探寻,涉及路由的惯例、自定义片段变量、约束、生成链接和URL等

引子 在了解MVC路由之前,必须了解的概念是"片段".片段是指除主机名和查询字符串以外的.以"/"分隔的各个部分.比如,在http://site.com/Home/Index中,包含2个片段,第一个片段是Home,第二个片段是Index. URL匹配的特点:● 保守的:URL中的片段数量必须和路由规则中的片段数量一致(路由规则没有设置默认值的前提下)● 宽松的:在满足片段数要求的前提下,URL中的片段内容是宽松的 本篇涉及的方面包括:1.路由惯例2.自定义片段变量3

(转载)SQL基础--&gt; 约束(CONSTRAINT)

感谢Leshami的分享,原文地址:http://blog.csdn.net/leshami/article/details/5711367 --============================= --SQL基础--> 约束(CONSTRAINT) --============================= 一.几类数据完整性 实体完整性:表中记录不重复(任何两条记录不全等)并且每条记录都有一个非空主键 域完整性:表中字段值必须与字段数据类型.格式.有效范围相吻合 参照完整性:不能引

SQL基础--&gt; 约束(CONSTRAINT)

一.几类数据完整性 实体完整性:表中记录不重复(任何两条记录不全等)并且每条记录都有一个非空主键 域完整性:表中字段值必须与字段数据类型.格式.有效范围相吻合 参照完整性:不能引用不存在的值 自定义完整性:根据特定业务领域定义的需求完整性 保证数据完整性的几种常用方法 约束(最常用) 过程 函数 触发器 实体完整性:primary key.unique.索引(index) 域完整性:check.foreign key.not null.数据类型 参照完整性:foreign key 自定义完整性:

Oracale数据处理和约束

数据处理 其他DML语句: INSERT ①INSERT INTO table [(column [, column-])] VALUES (value [, value-]); 使用这种语法一次只能向表中插入一条数据. 不能使用这种方式同时向表中插入多条数据 ②通过创建脚本的方式 如:INSERT INTO departments (department_id, department_name, location_id) VALUES (&department_id, '&departm

ASP.NET MVC自定义路由 - 实现IRouteConstraint限制控制器名(转载)

自定义约束前 namespace MvcApplication2 { public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); //默认 routes.MapRoute( name: "Default", url: "{controller}/

SQL Server 的常见约束

1.主键约束------我是最常见的哦(PRIMARY KEY) 限制:不能为空,数据唯一,一个表中只有一个 方法: 建表时直接在列类型后面添加   如: 1 CREATE TABLE stuDB 2 ( 3 SID CHAR(12) PRIMARY KEY 4 ) 5 建表后通过添加语句添加 添加语句为: ALTER TABLE <表名> ADD CONSTRAINT 自定义的约束名 约束类型 具体的约束说明 例: ALTER TABLE stuDB ADD CONSTRAINT PK_SI

内联路由约束的检验

内联路由约束的检验 当某个请求能够被成功路由的前提是它满足某个Route对象设置的路由规则,具体来说,当前请求的URL不仅需要满足路由模板体现的路径模式,请求还需要满足Route对象的所有约束.路由系统采用IRouteConstraint接口来表示路由约束,所以我们在接下来的内容中将路由约束统称为RouteConstraint. 在大部分情况下,约束都是针对路由模板中定义的某个路由参数,其目的在于验证URL携带的某部分的内容是否有效.不过也有一些约束与路由参数无关,这些约束规范往往是除URL之前

ASP.NET Core的路由[5]:内联路由约束的检验

当某个请求能够被成功路由的前提是它满足某个Route对象设置的路由规则,具体来说,当前请求的URL不仅需要满足路由模板体现的路径模式,请求还需要满足Route对象的所有约束.路由系统采用IRouteConstraint接口来表示路由约束,所以我们在接下来的内容中将路由约束统称为RouteConstraint. 在大部分情况下,约束都是针对路由模板中定义的某个路由参数,其目的在于验证URL携带的某部分的内容是否有效.不过也有一些约束与路由参数无关,这些约束规范往往是除URL之前的其他请求元素,比如