[MVC] 筆記01-02 Integrating Validation and Business Rule Logic

摘要:[MVC] 筆記01-02 Integrating Validation and Business Rule Logic

在Model Class中加入Validation機制,有下列幾種

Validation

  1. 值域RangeAttribute
  2. RegularExpressionAttribute 
  3. 長度StringLengthAttribute  
  4. 必填RequiredAttribute

這是定義在Class Level之上,如果我們加入這些Validation,會跟之前的Entity Model混淆,所以我們可以把Validation寫在 Partial Class。但是記得要在原來Dinner類別上加註   [MetadataType(typeof(Dinner_Validation))]

public class Dinner_Validation
{
    [Required(ErrorMessage = “Title is required”)]
    [StringLength(50, ErrorMessage = “Title may not be longer than 50 characters”)]
    public string Title { get; set; }
    [Required(ErrorMessage = “Description is required”)]
    [StringLength(265, ErrorMessage = 
      “Description must be 256 characters or less”)]
    public string Description { get; set; }
    [Required(ErrorMessage = “Address is required”)]
    public string Address { get; set; }
    [Required(ErrorMessage = “Country is required”)]
    public string Country { get; set; }
    [Required(ErrorMessage = “Phone# is required”)]
    public string ContactPhone { get; set; }
}

有了validation機制,我們可以利用ModelState.IsValid檢查屬性是否符合規定。

public class DinnerController : Controller {
    [HttpPost]
    public ActionResult Create(Dinner dinner) {
        if(ModelState.IsValid) {
            // Dinner is valid, save it.
        }
        else {
            return View();
        }
    }

這樣的寫法是把 business rules寫在domain Model layer,而非UI layer好處是可以共用。

http://www.plurk.com/SophieQ