摘要:[MVC] 筆記01-02 Integrating Validation and Business Rule Logic
在Model Class中加入Validation機制,有下列幾種
Validation
- 值域RangeAttribute
- RegularExpressionAttribute
- 長度StringLengthAttribute
- 必填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好處是可以共用。