读书人

Asp.Net MVC4入门指南(八):给数据模

发布时间: 2013-03-10 09:38:39 作者: rapoo

Asp.Net MVC4入门指南(8):给数据模型添加校验器

在本节中将会给Movie模型添加验证逻辑。并且确保这些验证规则在用户创建或编辑电影时被执行。

保持事情 DRY

ASP.NET MVC 的核心设计信条之一是DRY: "不要重复自己—on’t Repeat Yourself)"。ASP.NET MVC鼓励您指定功能或者行为,只做一次,然后将它应用到应用程序的各个地方。这可以减少您需要编写的代码量,并减少代码出错率,易于代码维护。

给ASP.NET MVC 和 Entity Framework Code First 提供验证支持是 DRY 信条的一次伟大实践。您可以在一个地方 (模型类) 中以声明的方式指定验证规则,这个规则会在应用程序中的任何地方执行。

让我们看看您如何在本电影应用程序中,使用此验证支持。

给电影模型添加验证规则

您将首先向Movie类添加一些验证逻辑。

打开Movie.cs文件。在文件的顶部添加using语句,从而引用System.ComponentModel.DataAnnotations命名空间:

using System.ComponentModel.DataAnnotations;

注意,该命名空间不包含System.Web。DataAnnotations 提供了一组内置的验证特性,您可以以声明的方式,应用于任何类或属性。

更新Movie类,以利用内置的RequiredStringLengthRange验证属性。以下面的代码为例,以应用验证属性。

注意,为了使jQuery支持使用逗号的非英语区域的验证 ,需要设置逗号(",")来表示小数点,你需要引入globalize.js并且你还需要具体的指定cultures/globalize.cultures.js文件 (地址在https://github.com/jquery/globalize) 在 JavaScript 中可以使用 Globalize.parseFloat。下面的代码展示了在"FR-FR" Culture下的Views\Movies\Edit.cshtml 视图:

如何验证创建视图和创建方法

您可能很想知道验证用户界面在没有更新控制器或视图代码的情况下是如何生成的。下面列出了MovieController类中的Create方法。它们是之前教程中自动生成的,并没有修改。

Asp.Net MVC4入门指南(八):给数据模型添加校验器

下图显示了如何在火狐浏览器中禁用 JavaScript。

Asp.Net MVC4入门指南(八):给数据模型添加校验器

下图显示了如何在 Chrome 浏览器中禁用 JavaScript。

Asp.Net MVC4入门指南(八):给数据模型添加校验器

下面是框架代码在之前的教程中生成的Create.cshtml视图模板。它用来为以上两个操作方法来显示初始的form,同时在验证出错时来重新显示视图。

请注意,代码如何使用Html.EditorFor helper 输出为Movie中的每个属性的<input>元素。此Helper旁边是对Html.ValidationMessageFor方法的调用。这两个Helper方法将处理由控制器传递到视图的模型对象(在这里是,Movie对象)。它们会自动查找模型中指定的验证属性,并显示适当的错误消息。

如果您想要在后面更改验证逻辑,您可以做在一个地方,将验证信息添加到模型上。 (此示例中,是movie 类)。您不必担心不符合规则 ,验证逻辑会在应用程序的不同部分执行——在一个地方定义验证逻辑将会被使用到各个地方。这使代码非常干净,并使它易于维护和扩展。它意味着您会完全遵守DRY原则。

给影片模型添加Formatting

打开Movie.cs文件并查看Movie 类。System.ComponentModel.DataAnnotations命名空间提供了内置的验证特性集的格式属性。我们已经为发布日期和价格字段应用了DataType枚举值。下面的代码示例了ReleaseDatePrice属性与相应的DisplayFormat属性。

[DataType(DataType.Date)] public DateTime ReleaseDate { get; set; } [DataType(DataType.Currency)] public decimal Price { get; set; }

DataType属性不是验证特性,它们用来告诉视图引擎如何Render HTML 。在上面的示例中,DataType.Date属性将影片日期显示为日期,例如,下面的DataType属性不会验证数据的格式:

[DataType(DataType.EmailAddress)]
[DataType(DataType.PhoneNumber)]
[DataType(DataType.Url)]

上面列出的属性只提供视图引擎来显示数据的格式(如:<a> 为 URL ,< href="mailto:EmailAddress.com"> 为电子邮件。您可以使用正则表达式属性来验证数据的格式。)

另一种使用DataType 属性的方式,您可以显式设置DataFormatString。下面的代码示例了具有一个日期格式字符串的Release Date属性 (即"d")。

[DisplayFormat(DataFormatString = "{0:d}")]
public DateTime ReleaseDate { get; set; }

下面的代码设置Price属性为货币格式。

[DisplayFormat(DataFormatString = "{0:c}")]
public decimal Price { get; set; }

完整的Movie 类如下所示。

下图为默认Culture的显示(English US) 。

Asp.Net MVC4入门指南(八):给数据模型添加校验器

在下一部分,我们先会看看代码,然后再改进一下自动生成的DetailsDelete 方法。

--------------------------------------------

译者注:

本系列共9篇文章,翻译自Asp.Net MVC4 官方教程,由于本系列文章言简意赅,篇幅适中,从一个示例开始讲解,全文最终完成了一个管理影片的小系统,非常适合新手入门Asp.Net MVC4,并由此开始开发工作。9篇文章为:

1. Asp.Net MVC4 入门介绍

原文地址:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc-4

译文地址:http://www.cnblogs.com/powertoolsteam/archive/2012/11/01/2749906.html

2. 添加一个控制器

原文地址:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-controller

译文地址:http://www.cnblogs.com/powertoolsteam/archive/2012/11/02/2751015.html

3. 添加一个视图

原文地址:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-view

译文地址:http://www.cnblogs.com/powertoolsteam/archive/2012/11/06/2756711.html

4. 添加一个模型

原文地址:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-model

译文地址:http://www.cnblogs.com/powertoolsteam/archive/2012/12/17/2821495.html

5. 从控制器访问数据模型

原文地址:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/accessing-your-models-data-from-a-controller

译文地址:http://www.cnblogs.com/powertoolsteam/archive/2013/01/11/2855935.html

6. 验证编辑方法和编辑视图

原文地址:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/examining-the-edit-methods-and-edit-view

译文地址:http://www.cnblogs.com/powertoolsteam/archive/2013/01/24/2874622.html

7. 给电影表和模型添加新字段

原文地址:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-new-field-to-the-movie-model-and-table

译文地址:http://www.cnblogs.com/powertoolsteam/archive/2013/02/26/2933105.html

8. 给数据模型添加校验器

原文地址:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-validation-to-the-model

译文地址:http://www.cnblogs.com/powertoolsteam/archive/2013/03/05/2944030.html

9. 查询详细信息和删除记录

原文地址:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/examining-the-details-and-delete-methods

译文地址:

读书人网 >ASP

热点推荐