MVC 音乐商店 第 6 部分: 使用数据批注模型验证
2013-10-11 11:15
351 查看
MVC 音乐商店是介绍,并分步说明了如何使用 ASP.NET MVC 和 Visual Studio 为 web 开发教程应用程序。
MVC 音乐商店是一个轻量级的示例存储实现它卖音乐专辑在线,并实现基本的网站管理、 用户登录,和购物车功能。
这个系列教程详细说明所有为构建
ASP.NET MVC 音乐商店示例应用程序采取的步骤。第 6 部分介绍如何使用数据批注为模型验证。
我们与我们创建和编辑的窗体有一个主要的问题: 他们不做任何验证。我们可以做像在价格字段中,留下必填的字段为空或键入字母的事情,我们会看到的第一个错误是来自数据库。
我们很容易可以向我们的应用程序添加验证,通过将数据批注添加到我们的示范课。数据批注使我们能够描述我们想要的规则应用于我们的模型属性,并将照顾
ASP.NET MVC 强制他们并向我们的用户显示适当的消息。
必需 - 指示该属性是必需的字段
显示名称— — 定义我们想要使用的窗体字段和验证消息的文本
StringLength — — 定义为一个字符串字段的最大长度
范围— — 给一个最大和最小值为数值字段
绑定— — 列表字段来排除或包括绑定参数或者表单值到模型属性时
ScaffoldColumn — — 允许隐藏编辑器窗体中的字段
注:
在使用数据批注属性的模型验证的详细信息,请参阅 MSDN 文档在 http://go.microsoft.com/fwlink/?LinkId=159063
打开专辑类,并将以下using语句添加到顶部。
下一步,更新要添加显示和验证属性,如下所示的属性。
我们在那里的时候我们也改变的体裁和艺术家对虚拟属性。这将允许实体框架来懒-负载他们作为必要。
后有这些属性添加到我们专辑模型中,我们创建和编辑屏幕立即开始验证字段,使用显示名称我们选择 (例如 Url 而不是 AlbumArtUrl 专辑艺术)。运行该应用程序并浏览到
/StoreManager/Create。
接下来,我们就会打破一些验证规则。输入
0 的价格,标题为空。当我们单击创建按钮时,我们将看到与验证错误消息显示哪些字段不符合有效性规则我们定义了显示的窗体。
1.用户必须等待该窗体以张贴、 验证的服务器上,并且向他们的浏览器发送响应。
2.用户没有得到即时的反馈,当他们更正字段,因此,它现在将传递的验证规则。
3.我们正在浪费服务器资源来执行验证逻辑而不是利用用户的浏览器。
幸运的是,ASP.NET MVC 3 脚手架模板具有客户端验证内置的要求没有任何额外的工作。
在标题字段中键入一个字母满足验证要求,所以验证消息立即被删除。
请使用在http://mvcmusicstore.codeplex.com的讨论的任何问题或意见。
MVC 音乐商店是一个轻量级的示例存储实现它卖音乐专辑在线,并实现基本的网站管理、 用户登录,和购物车功能。
这个系列教程详细说明所有为构建
ASP.NET MVC 音乐商店示例应用程序采取的步骤。第 6 部分介绍如何使用数据批注为模型验证。
我们与我们创建和编辑的窗体有一个主要的问题: 他们不做任何验证。我们可以做像在价格字段中,留下必填的字段为空或键入字母的事情,我们会看到的第一个错误是来自数据库。
我们很容易可以向我们的应用程序添加验证,通过将数据批注添加到我们的示范课。数据批注使我们能够描述我们想要的规则应用于我们的模型属性,并将照顾
ASP.NET MVC 强制他们并向我们的用户显示适当的消息。
向我们的专辑形式添加验证
我们将使用以下数据批注属性:必需 - 指示该属性是必需的字段
显示名称— — 定义我们想要使用的窗体字段和验证消息的文本
StringLength — — 定义为一个字符串字段的最大长度
范围— — 给一个最大和最小值为数值字段
绑定— — 列表字段来排除或包括绑定参数或者表单值到模型属性时
ScaffoldColumn — — 允许隐藏编辑器窗体中的字段
注:
在使用数据批注属性的模型验证的详细信息,请参阅 MSDN 文档在 http://go.microsoft.com/fwlink/?LinkId=159063
打开专辑类,并将以下using语句添加到顶部。
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; } } }
我们在那里的时候我们也改变的体裁和艺术家对虚拟属性。这将允许实体框架来懒-负载他们作为必要。
public virtual Genre Genre { get; set; } public virtual Artist Artist { get; set; }
后有这些属性添加到我们专辑模型中,我们创建和编辑屏幕立即开始验证字段,使用显示名称我们选择 (例如 Url 而不是 AlbumArtUrl 专辑艺术)。运行该应用程序并浏览到
/StoreManager/Create。
接下来,我们就会打破一些验证规则。输入
0 的价格,标题为空。当我们单击创建按钮时,我们将看到与验证错误消息显示哪些字段不符合有效性规则我们定义了显示的窗体。
测试客户端验证
服务器端验证,从应用角度来看,非常重要,因为用户可以绕过客户端验证。但是,只有执行服务器端验证网页形式表现出三个重大问题。1.用户必须等待该窗体以张贴、 验证的服务器上,并且向他们的浏览器发送响应。
2.用户没有得到即时的反馈,当他们更正字段,因此,它现在将传递的验证规则。
3.我们正在浪费服务器资源来执行验证逻辑而不是利用用户的浏览器。
幸运的是,ASP.NET MVC 3 脚手架模板具有客户端验证内置的要求没有任何额外的工作。
在标题字段中键入一个字母满足验证要求,所以验证消息立即被删除。
请使用在http://mvcmusicstore.codeplex.com的讨论的任何问题或意见。
相关文章推荐
- ASP.NET MVC 音乐商店 - 6. 使用 DataAnnotations 进行模型验证
- ASP.NET MVC 音乐商店 - 6. 使用 DataAnnotations 进行模型验证
- ASP.NET MVC 音乐商店 - 6. 使用 DataAnnotations 进行模型验证
- ASP.NET MVC 音乐商店 - 6. 使用 DataAnnotations 进行模型验证
- ASP.NET MVC Music Store教程(6):使用数据注释为模型进行验证
- MVC音乐商店 - 第四部分:Models和数据访问
- MVC 音乐商店 第 4 部分: 模型和数据访问
- MVC音乐商店 - 第三部分:视图和视图模型
- JSP培训(7)——使用JDBC完成动态验证、采用MVC完成数据查询
- MVC 音乐商店 第 3 部分:Views 和 ViewModels
- 译文:使用MVC5的Entity Framework 6入门(六)——为ASP.NET MVC应用程序创建更复杂的数据模型
- [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:建立一个EF数据模型
- MVC 音乐商店 第 8 部分: 购物车与 Ajax 更新
- ASP.NET MVC模型部分验证
- MVC 音乐商店 第1部分: 概述和文件-> 新建项目
- 使用joi来验证数据模型
- ASP.NET MVC 音乐商店 - 3. 视图与模型
- ASP.NET MVC 音乐商店 - 4. 数据访问
- ASP.NET MVC 音乐商店 - 8. 使用 Ajax 更新的购物车
- 使用MVC模型的用户登录及注册(注销部分)