Asp.Net MVC entity framework模型验证

ASP.NET MVC +EF6 +MySql 项目搭建 我的第一篇博客一、准备工作       1、下载MySQL-Connector-net  :  https://dev.mysql.com/downloads/connector/net/(我这里用的6.9.12 版本 )     2、下载MySQL for Visual Studio:https://dev.mysql.com/downloads/installer/     3、建立ASP.N... 阅读详情

一、不修改EF自动生成类,添加注解校验

添加扩展模型类:
    /// <summary>
    /// 用户 视图校验类
    /// </summary>
    internal class UsersMetadata
    {
        [Display(Name = "姓名")]
        [Required(AllowEmptyStrings = false, ErrorMessage = "姓名不能为空")]
        public string Name { get; set; }
        [Display(Name = "手机号码")]
        [Required(AllowEmptyStrings = false, ErrorMessage = "手机号码不能为空")]
        public string Mobile { get; set; }
    }

    [MetadataType(typeof(UsersMetadata))]
    public partial class Users
    {

    }
控制器后台代码:
        /// <summary>
        /// 确定用户新增
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        public ContentResult UsersAdd(Users model)
        {
            string flag = "0";
            if (ModelState.IsValid)
            {
                #region 用户新增
                UsersBLL bll = new UsersBLL();                
                model.RegisterDate = DateTime.Now;//注册日期 

                flag = bll.Insert(model).ID > 0 ? "1" : "0";
                #endregion
            }
            return Content(flag);
        }

二、基本校验使用

原文地址:http://www.cnblogs.com/showstyle/p/3336369.html

StringLength特性-限制长度

         这个特性看它命名规则就知道它是什么意思了,字符串长度对吧。是的你没看错,就是字符串长度。实例代码:

[StringLength(20,ErrorMessage = "密码不能超过20个字符")]
public string Password { get; set; }

我们只需要在模型属性上加上这么个特性,那么校验的时候这个字符串不能超过20个字符。ErrorMessage就是校验不通过时的消息。

Required特性-不能为空

         这个特性表必须的、不能为空的。用于不为空校验。默认为不允许为空。允许为空则添加AllowEmptyStrings = true

[Required(ErrorMessage = "密码不能超过20个字符")]
public string Password { get; set; }

RegularExpression-规则校验(正则校验)

         正则表达式在校验中是必不可少的一部分、微软也为我们提供了这个类型,非常方便的使用。

[RegularExpression(@"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$", ErrorMessage = "邮箱不正确")]
public string Email { get; set; }

Range-数值范围

         当对一个数值进行校验时、一般可能会用到取值范围。比如年龄:

[Range(0,120,ErrorMessage = "年龄取值范围0-120")]
public int Age { set; get; }

Compare-比较

         比较两个值是否一致,一般用于二次输入。Password是需要比较的值

[Compare("Password",ErrorMessage = "两次输入不一致")]
public string PasswordConfirm { get; set; }

Remote-远程校验

         这个在登录的时候用的非常多。比如你的用户名ID是否已经被注册,这是需要从数据库查询之后才知道的。这个类有些特殊,它不在System.ComponentModel.DataAnnotations命名空间下,它是在System.Web.Mvc;命名空间下的。

 

[Remote("CheckUserName","Register",ErrorMessage = "用户名已被注册")]
public string UserName { get; set; }

 

Action:代表你要请求的方法

Controller:表示你要请求的控制器

这个特性有一个约定,就是你请求的这个路径必须返回True或False,并且是以Json格式返回的。至于返回True或False的逻辑,看大家自己的需求了。

 

public ActionResult CheckUserName()
{
     return Json(false, JsonRequestBehavior.AllowGet);
}

Display-显示名称

         这个特性、个人认为不属于校验里面的一部分,它只是用户前台展示时的一个显示名称。后面在为大家讲解这个的实际应用

[Display(Name = "年龄")]
 public int Age { set; get; }

数据绑定及验证

首先要进行客户端校验有几个比较重要的点:

1、  必须要用@Html.BeginForm()这种方式包含住输入标签。(自己试验了下,是这样的。如果有错误请好心提醒)

2、  必须要用强类型页面。

3、  必须要引用Jquery库、Jquery.Validate、Jquery.Validate.unobtrusive这三个文件

4、  web.config文件中这两个值必须为True。默认为True

 

<appSettings>
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>

三、自定义数据注解

    public class EnglishCharAttribute : ValidationAttribute //RegularExpressionAttribute
    {
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            Regex reg = new Regex("^[a-z]+$");
            if (reg.IsMatch(value.ToString()))
            {
                return ValidationResult.Success;
            }
            else
            {
                return new ValidationResult("必须为英文字符!!!!");
            }
        }

        //public EnglishCharAttribute()
        //    : base(@"^[a-z]+$")
        //{
        //}
    }
更多参考:
http://www.cnblogs.com/zhangkai2237/archive/2012/12/12/2814825.html
http://blog.youkuaiyun.com/chengly0129/article/details/7828441
ASP.NET MVC5 C# Entity Framework 连接 Oracle 数据库 ASP.NET MVC5 C# Entity Framework 连接 Oracle 数据库创建数据库安装 Entity Framework配置数据库连接字符串添加实体模型类添加数据库上下文类添加控制器类运行测试 创建数据库 创建【全局数据库名】为 demodb 的Oracle数据库,用 SYSTEM 用户连接成功后创建【用户名】为 DJIANG 的用户,并授予该用户 DBA 角色 安装 Enti... 阅读详情

相关推荐

ASP.NET MVC4开发实战指南:源代码剖析

ASP.NET MVC4是一个高度可扩展的框架,用于构建Web应用程序。与以往的Web表单不同,MVC框架将应用程序分解为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。这种设计模式促进了更清晰的分离关注点(Separation of Concerns),让开发人员能够更专注于应用程序的不同方面。模型代表业务数据和逻辑,视图是用户界面的展示层,而控制器则处理用户输入,并调用模型和视图来完成操作。

weixin_30205153的博客 1053

ASP.NET MVC 开发模式(下)基础完结篇

模型的绑定与验证; 通过模型绑定获取表单数据; 通过绑定基本类型获取表单数据; 对模型数据进行验证; 通过EF框架实现删除和修改; 通过EF框架删除数据; 通过EF框架修改数据; 实现登录及MVC Filter的应用; AuthorizeFilter筛选器; ActionFilter过滤器; ResultFilter过滤器; ExceptionFilter过滤器; 布局页和分部视图; 母版视图的基本使用( @RenderBody ); 母版中的页面片段(@RenderSection); 分部视图

视觉软件 994

ASP.NET资讯站完整源码解析与实战

ASP.NET 是由微软开发的一种用于构建动态 Web 应用程序的服务器端框架,基于 .NET 平台,具备高性能、模块化和易于扩展的特性。它继承并发展了传统 ASP 技术,通过编译执行而非解释执行,显著提升了运行效率。类是对象的模板,对象是类的实例。set;set;Console.WriteLine("你好,我是 " + Name);// 使用p.Age = 25;参数说明:set;:自动实现的属性,提供封装。:创建一个对象实例。

weixin_36296444的博客 974

.net的验证大全

//[StringLength(160)] //[Required(AllowEmptyStrings = false, ErrorMessage = "密码不能为空")] //[StringLength(60, MinimumLength = 20, ErrorMessage = "密码必须在{2} 和{1}之间")] //[RegularExpression(@”[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}”)] //[Range(35,44)]...

cd1403220566的博客 412

体验灵雀云-创建基于Docker的云服务

今天体验了一下灵雀云,创建了第一个基于Docker的云服务。 1.登录灵雀云 2.开始使用 登录之后,从"控制台"进入操作界面,开始创建服务。 首先需要选择一个镜像。灵雀云已经为您提供了一些常用的镜像列表。请在“常用镜像”列表中,选择“其它”,然后找到“alauda/hello-world”镜像,点击它右侧的“选择”按钮,进入服务参数配置页面。 选择完要创建的

tomcat的专栏 3234

Vivado 2021.1 实战:手把手教你用IEEE1735 V2加密你的Verilog源码(附完整TCL命令)

本文详细介绍了在Vivado 2021.1中使用IEEE1735 V2标准加密Verilog源码的全流程,包括许可证申请、密钥文件配置、TCL命令执行及加密后验证。通过实战步骤和完整TCL命令,帮助开发者有效保护FPGA设计知识产权,确保核心算法安全。

weixin_42706667的博客 190

创建一个非空的GUID验证属性和一个非默认的验证属性

创建一个非空的GUID验证属性和一个非默认的验证属性 在本文中,我将描述一个方便的验证属性,该属性在ASP.NET Core模型绑定期间用于验证GUID没有默认值Guid.Empty。我总是发现自己在项目中重新创建它,所以现在我可以从这里复制它! 为什么需要一个非空的验证属性? 您可能想知道为什么“非空”属性是必需的。这与Required属性不一样吗?假设您在API控制器上有一个可更新用户名的操作方法。例如: [ApiController] public class UserController: Cont

MaQuanXin的博客 1080

RK3568-适配phy芯片ip101gri

复位时间查阅数据手册。

Paper_Love的博客 2643

MVC 数据验证(检查用户名是否存在)

控制器 Home using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using MvcApplication2.Models; namespace MvcApplication2.Controllers { public c

Fanbin168的专栏 1万+

【案例讲解】LVGL关于旋转的配置

在实现项目中,因为横竖屏的关系,需要对其做90度的旋转。配置旋转时发现一些局部刷新控件,旋转后效果不对。异常图标正常图标。

Bigan(安)的博客 4284

Yolov8-pose关键点检测:loss优化 | LRM loss困难样本挖掘,提升难样本、遮挡物等检测精度

LRM loss应用到能够大幅提升pose遮挡物性能

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1714

ASP.NET MVC 4 (十) 模型验证

模型验证是在模型绑定时检查从HTTP请求接收的数据是否合规以保证数据的有效性,在收到无效数据时给出提示帮助用户纠正错误的数据。 显式模型验证 验证数据最直接的方式就是在action方法中对接收的数据验证,以下面的Model为例: public class Appointment { public string ClientName { get; set; } ...

weixin_34122604的博客 208

在 SAP BTP ABAP 环境里直连 ABAP On-Premise OData

摘要 SAP BTP ABAP Environment 2311版本后,OData集成链路迎来重大改进:Service Consumption Model升级为v2版本,通过压缩模型到单一类减少对象数量;通信管理推荐采用Communication Arrangement替代传统Destination,提供更清晰的治理边界。新版支持同时生成OData v2/v4消费模型,并通过标准工厂类创建代理。配置需关注四层对象:Outbound Service声明协议入口,Scenario定义认证方式,System描述通

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1918

.net mvc4连接oracle,三、VS2010+ASP.NET MVC4+EF4+JqueryEasyUI+Oracle项目开发之——用户登录...

3、VS2010+ASP.NET MVC4+EF4+JqueryEasyUI+Oracle项目开发之——用户登录最近由于项目赶着上线,一直没时间接着写博客,今天终于空出了时间。声名:我不是专业美工,所以界面问题,希望大家不要拍砖。登录界面如下:在ASP.NET MVC中,要新增一个功能,我们首先要添加一个控制器,AccountController.cs,添加方法:右键单击Controllers文件...

weixin_31845243的博客 205

YOLO11改进 - 卷积Conv | DEGConv(方向引导边缘门控卷积) : 空间分块、方向先验、轻量边缘增强

本文介绍了方向引导边缘门控卷积(DEGConv),一种专为增强边缘敏感度与方向感知能力设计的轻量级模块。该方法通过 Sobel 算子生成方向嵌入,结合条纹卷积提取水平与垂直边缘特征,并利用门控机制动态抑制背景噪声,从而精准捕捉细粒度结构。我们将 DEGConv 成功集成进 YOLO11,在 Backbone 的 SPPF 后及 Neck 的 P3、P4 分支中引入该模块以优化特征提取。实验证明,集成 DEGConv 的 YOLO11 在检测任务中表现优异,有效提升了模型对复杂边缘与方向特征的建模能力。

魔改工程师的博客 676

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

asp.net mvc常用的数据注解和验证以及entity framework数据映射的一个实例

asp.net mvc常用的数据注解和验证以及entity framework数据映射的一个实例 下面是model层的管理员信息表 在此Model上我们用到了asp.net mvc的数据注解和验证,可用来作为后端验证,entity framework对数据...

weixin_38168590的博客 70

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

使用 Entity Framework 框架快速开发 MVC模式 ASP.NET Framework 可操作数据库的动态网站 并 部署

使用Entity Framework框架快速开发MVC模式的ASP.NET动态网页并部署 采用Visual Studio+SQL Server开发,实现身份验证及角色权限控制。

weixin_46356548的博客 3183

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

使用Entity Framework 4进行代码优先开发 转

NET 4随带发布了一个改进版的Entity Framework(EF)— 一个位于System.Data.Entity命名空间的数据访问函数库。 当Entity Framework在.NET 3.5 SP1里第一次发布的时候,很多程序员给我们提供了反馈,指出他们认为在第一个版本中不足的地方。SQL团队积极听取这些意见,并且在.NET 4的版本里吸取了意见。 EF4里一些重大改进包含有: ·...

weixin_30496431的博客 98

Asp.Net Mvc之模型注解

Asp.Net Mvc之模型注解 正文: 命名空间: using System.ComponentModel; using System.ComponentModel.DataAnnotations; 在实体对象的属性上贴上相对应的特性标签(本质是通过反射得到特性标签的类实例,再进行...

weixin_30448603的博客 338

ASP.NET MVC – Nerdinner - notes

function __v_exchange(namea, nameb){ var a = document.getElementById(namea); var b = document.getElementById(nameb); if(a != null && b != null) { var tmp_style_display = a.style.displ

volnet的专栏 338

MVC3教程之实体模型和EF CodeFirst

    在本节中,我们将使用Entity Framework 数据访问技术来定义这些模型类,并对这些类来进行操作。EF支持一个被称之为“code-first”的开发范例。Code-first允许你通过书写一些简单的类来创建模型对象,而不用关心这些类的持久化。你可以通过访问这些类的方式来访问数据库,这是一种非常方便快捷的开发模式。   1.添加一个Model   添加Model和添加普通类的操...

weixin_33787529的博客 168

ASP.NET MVC 入门介绍

参考文章 ASP.NET MVC Overview.  1. MVC模式  MVC模式是一种软件架构模式。它把软件系统分为三个部分:模型(Model),视图(View)和控制器(Controller)。MVC模式最早由Trygve Reenskaug在1974年提出,是施乐帕罗奥多研究中心(Xerox PARC)在20世纪80年代为程序语言Smalltalk发 明的一种软件设...

weixin_34337265的博客 113

新年奉献MVC+EF(CODEFIRST)+EASYUI医药MIS系统(转)

出处:http://www.cnblogs.com/chenlinzhi/p/4332628.html 本人闲来无事就把以前用Asp.net做过的一个医药管理信息系统用mvc,ef,easyui重新做了一下,业务逻辑简化了许多,旨在加深对mvc,ef(codefirst),easyui,AutoMapper,Ninject等技术的理解和运用,今天拿出来跟大家分享,就是想对这些技术还处在入门阶段...

weixin_30480583的博客 106

ASP.NET MVC3 快速入门-第八节 在模型中添加验证规则(转)

本节介绍如何在我们的Movie(电影)模型中添加一些验证规则,同时确认当用户使用我们的应用程序创建或编辑电影信息时将使用这些验证规则对用户输入的信息进行检查。 8.1 DRY原则     在ASP.NET MVC中,有一条作为核心的原则,就是DRY(“Don’t Repeat Yourself,中文意思为:不要让开发者重复做同样的事情)原则。ASP.NET MVC提倡让开发者“一处定义、处处...

weixin_34099526的博客 109
上一篇: Activity启动模式
下一篇: 最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等
我心V飞翔
博客等级 码龄16年 55粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值