MVC 音乐商店 第 6 部分: 使用数据批注模型验证

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 部分: 使用数据批注模型验证)