ASP.NET MVC Music Store教程(6):使用数据注释为模型进行验证

简介: 转自http://firechun.blog.163.com/blog/static/31804522201103133832931/在Edit和Create表单中有一个很严重的问题:没有做任何验证。

转自http://firechun.blog.163.com/blog/static/31804522201103133832931/

在Edit和Create表单中有一个很严重的问题:没有做任何验证。我们可以试一下让必填字段为空或者在价格字段中输入字母,我们将会看到一个来自数据库的错误。

为应用程序的模型类添加数据注释(Data Annotations)让我们对数据进行验证变得很容易,数据注释可以让我们描述要应用到模型属性上的规则,ASP.NET MVC会强制应用这些规则并显示恰当的消息给用户。

为Album表单添加验证

我们将使用下列数据注释特性:

  • Required——表示该字段为必填字段
  • DisplayName——定义我们要显示在表单字段和验证信息中出现的文本
  • StringLength——为字符串属性定义最大长度
  • Range——为数值字段定义最大值和最小值
  • Bind——列出为模型属性绑定参数或表单数据时,包括或排除的字段
  • ScaffoldColumn ——在编辑器表单中允许隐藏的字段

注意:要获得更多使用数据注释特性为模型验证的信息,访问MSDN文档:http://go.microsoft.com/fwlink/?LinkId=159063

打开Album类并在顶部添加下列命名空间:

using System.ComponentModel; 
 using System.ComponentModel.DataAnnotations; 
 using System.Web.Mvc; 
 为属性添加显示和验证特性,如下所示:

namespace MvcMusicStore.Models 

    [Bind(Exclude = "AlbumId")] 
    public class Album 
    { 
        [ScaffoldColumn(false)] 
        public int      AlbumId    { get; set; } 
        [DisplayName("Genre")] 
        public int      GenreId    { get; set; } 
        [DisplayName("Artist")] 
        public int      ArtistId   { get; set; } 
        [Required(ErrorMessage = "An Album Title is required")] 
        [StringLength(160)] 
        public string   Title      { get; set; } 
        [Required(ErrorMessage = "Price is required")] 
        [Range(0.01, 100.00, 
            ErrorMessage = "Price must be between 0.01 and 100.00")] 
        public decimal Price       { get; set; } 
        [DisplayName("Album Art URL")] 
        [StringLength(1024)] 
        public string AlbumArtUrl { get; set; } 
        public virtual Genre  Genre    { get; set; } 
        public virtual Artist Artist   { get; set; } 
    } 
}

在类中添中这些后,Create和Edit界面立即对字段验证,并使用我们定义的显示名称(DisplayName),例如用Album Art URL替换了AlbumArtURL。运行应用程序并浏览/StoreManager/Create:

ASP.NET MVC Music Store教程():使用数据注释为模型进行验证 - firechun - firechun的博客

 点击“Save”按纽时,不符合验证规则的字段旁会显示验证错误信息。

ASP.NET MVC Music Store教程(6):使用数据注释为模型进行验证 - firechun - firechun的博客

 测试客户端验证

从应用角度来看,服务器端验证是非常重要的,因为用户可能绕过客户端验证。然而只对Web表单进行服务器验证有三个重大问题:

  • 1.在表单提交->服务器端验证->返回到用户浏览器的过程中,用户必须等待。
  • 2.用户正确填写字段并通过验证规则时不能及时得到反馈。
  • 3.我们浪费服务器资源执行验证逻辑,而没有利用用户的浏览器。

很幸运,ASP.NET MVC模板架构内建了客户端验证,不需要任何额外的工作。

在Title字段输入单个字符以满足非空验证,验证会立即消失(证明它是客户端验证)。

ASP.NET MVC Music Store教程(6):使用数据注释为模型进行验证 - firechun - firechun的博客
 
目录
相关文章
|
19天前
|
开发框架 前端开发 JavaScript
ASP.NET Web Pages - 教程
ASP.NET Web Pages 是一种用于创建动态网页的开发模式,采用HTML、CSS、JavaScript 和服务器脚本。本教程聚焦于Web Pages,介绍如何使用Razor语法结合服务器端代码与前端技术,以及利用WebMatrix工具进行开发。适合初学者入门ASP.NET。
|
3月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
48 7
|
3月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
75 0
|
4月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
56 0
|
4月前
|
开发框架 前端开发 安全
ASP.NET MVC 如何使用 Form Authentication?
ASP.NET MVC 如何使用 Form Authentication?
|
4月前
|
开发框架 .NET
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
145 0
|
7月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
212 0
|
7月前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
84 0
|
7月前
|
开发框架 前端开发 .NET
C# .NET面试系列六:ASP.NET MVC
<h2>ASP.NET MVC #### 1. MVC 中的 TempData\ViewBag\ViewData 区别? 在ASP.NET MVC中,TempData、ViewBag 和 ViewData 都是用于在控制器和视图之间传递数据的机制,但它们有一些区别。 <b>TempData:</b> 1、生命周期 ```c# TempData 的生命周期是短暂的,数据只在当前请求和下一次请求之间有效。一旦数据被读取,它就会被标记为已读,下一次请求时就会被清除。 ``` 2、用途 ```c# 主要用于在两个动作之间传递数据,例如在一个动作中设置 TempData,然后在重定向到另
364 5
|
存储 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(五)
经过一段时间的准备,新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始,在之前的文章中,讲解了商城系统的整体功能设计,页面布局设计,环境搭建,系统配置,及首页【商品类型,banner条,友情链接,降价促销,新品爆款】,商品列表页面,商品详情等功能的开发,今天继续讲解购物车功能开发,仅供学习分享使用,如有不足之处,还请指正。
176 0