MVC 音乐商店 第 6 部分: 使用数据批注模型验证
来源:互联网 发布:电子图书阅读软件 编辑:程序博客网 时间:2024/06/05 15:43
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语句添加到顶部。
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的讨论的任何问题或意见。
- MVC 音乐商店 第 6 部分: 使用数据批注模型验证
- MVC 音乐商店 第 4 部分: 模型和数据访问
- MVC 音乐商店 第 2 部分: 控制器
- ASP.NET MVC 音乐商店 - 6. 使用 DataAnnotations 进行模型验证
- MVC 音乐商店 第 3 部分:Views 和 ViewModels
- MVC 音乐商店 第 7 部分: 会员资格和授权
- MVC 音乐商店 第 9 部分: 注册和结帐
- MVC 音乐商店 第1部分: 概述和文件-> 新建项目
- MVC 音乐商店 第 5 部分: 编辑窗体和模板化
- MVC 音乐商店 第 8 部分: 购物车与 Ajax 更新
- MVC 音乐商店 第 10 部分: 导航和网站设计、 结论的最后更新
- ASP.NET MVC 音乐商店 - 3. 视图与模型
- ASP.NET MVC 音乐商店 - 4. 数据访问
- 充分利用 Java 的元数据,第 2 部分:自定义批注
- 充分利用 Java 的元数据,第 2 部分:自定义批注
- ASP.NET MVC模型部分验证
- ASP.NET MVC 音乐商店 - 0 概览
- ASP.NET MVC 音乐商店 - 2.控制器
- C#的GC,也就是垃圾回收机制
- cocos2d-x第一天:环境的搭建
- ARM存储器之:协处理器CP15
- C# 在两个不同的方法里面Lock同一个锁对象,是否需要线程等待?
- opencv读取灰度图像像素代码
- MVC 音乐商店 第 6 部分: 使用数据批注模型验证
- GOOGle site多个网址
- CUDA: 64bit在Win7平台的搭建
- 如何下载videolectures的视频
- android 横竖屏 相关
- 如何向App Store提交应用
- Html之table_rowspan用法_colspan_实例
- sh脚本异常:/bin/sh^M:bad interpreter: No such file or directory
- iOS面试题