9.5 为Order类定义验证规则
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;
namespace MvcBookStore.Models
{
[Bind(Exclude = "OrderId")]
public partial class Order
{
[ScaffoldColumn(false)]
public int OrderId { get; set; }
[ScaffoldColumn(false)]
public System.DateTime OrderDate { get; set; }
[ScaffoldColumn(false)]
public string Username { get; set; }
[Required(ErrorMessage = "必须填写姓")]
[DisplayName("姓")]
[StringLength(160)]
public string FirstName { get; set; }
[Required(ErrorMessage = "必须填写名")]
[DisplayName("名")]
[StringLength(160)]
public string LastName { get; set; }
[Required(ErrorMessage = "必须填写收货地址")]
[StringLength(70)]
[DisplayName("收货地址")]
public string Address { get; set; }
[Required(ErrorMessage = "必须填写省")]
[StringLength(40)]
[DisplayName("省")]
public string State { get; set; }
[Required(ErrorMessage = "必须填写城市")]
[StringLength(40)]
[DisplayName("城市")]
public string City { get; set; }
[Required(ErrorMessage = "必须填写邮政编号")]
[DisplayName("邮政编号")]
[StringLength(10)]
public string PostalCode { get; set; }
[Required(ErrorMessage = "必须填写国家")]
[StringLength(40)]
[DisplayName("国家")]
public string Country { get; set; }
[Required(ErrorMessage = "必须填写电话号码")]
[StringLength(24)]
[DisplayName("电话号码")]
public string Phone { get; set; }
[Required(ErrorMessage = "必须填写e-mail地址")]
[DisplayName("e-mail地址")]
[Regularexpression_r(@"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]
+\.[A-Za-z]{2,4}",ErrorMessage = "填写的e-mail地址无
效.")]
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
[ScaffoldColumn(false)]
public decimal Total { get; set; }
public List<OrderDetail> OrderDetails { get; set; }
}
}
图9-8 填写内容有错误的话可以立即看见错误提示
9.6 订单完成通知视图
订单完成通知视图非常简单,只是显示一下订单编号。在Complete方法中点击鼠标右键,使用int类性添加一个强类型的视图,如图9-9所示。
图9-9 添加订单完成通知视图
@model int
@{
ViewBag.Title = "订单已完成";
}
<h2>订单完成</h2>
<p>感谢您的本次购货! 您的订单号为: @Model</p>
<p>
@Html.ActionLink("继续购书", "Index",
"首页")
</p>
9.7 修改错误视图
@{
ViewBag.Title = "出错提示";
}
<h2>出错提示</h2>
<p>对不起,操作失败。
<a href="javascript:history.go(-1)">后退</a>
</p>