Welcome 微信登录

首页 / 网页编程 / ASP.NET / Contoso学习(四) 创建更加复杂的数据模型

Contoso学习(四) 创建更加复杂的数据模型2015-01-134 – 创建更加复杂的数据模型

在前面的课程中,你已经创建了一个简单的由三个实体组成的数据模型。在这个课程中,你将要增加更多的实体,以及关系,使用数据标注特性来控制模型类的行为。

在完成的时候,实体类表示的完整数据模型如下所示:

4-1 使用特性控制格式、验证以及数据库映射

在这一节中,你将会看到如何使用特性来控制数据模型的格式化、验证以及数据库映射。然后在后继的节中,将要通过为已经创建的类、新创建的类增加特性,来创建完整的 School 数据模型。

4-1-1 DisplayFormat 特性

对于学生的注册日期来说,虽然你只关心注册的日期,但是现在的页面在日期之后还显示了时间。通过使用数据标注特性,可以通过一点代码就可以在所有的地方修补这个问题。看一下示例,你就可以为 Student 类的 EnrollmentDate 属性增加一个特性了。

在 ModelsStudent.cs ,在开始部分为命名空间 System.ComponentModel.DataAnnotations 增加一个 using 语句,然后在 EnrollmentDate 属性上增加一个 DisplayFormat 的特性。如下所示:

using System;using System.Collections.Generic;using System.ComponentModel.DataAnnotations;namespace ContosoUniversity.Models{public class Student{public int StudentID { get; set; }public string LastName { get; set; }public string FirstMidName { get; set; }[DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]public DateTime EnrollmentDate { get; set; }public virtual ICollection<Enrollment> Enrollments { get; set; }}}
格式化串指定了在显示这个属性的时候仅仅使用短日期格式。ApplyFormatInEditMode 指定即使在将这个属性的值显示在文本框中进行编辑的时候也应用这个特性。( 有些字段不需要这些特殊设置,比如,在文本框中编辑货币的时候,就不会希望出现货币符号 )。

再次运行程序,你会注意到注册时间不再是长日期格式了,如果你查看其他的学生页面也会看到同样的结果。