在C#中,Model驗證通常是通過數據注解(Data Annotations)和自定義驗證屬性(Custom Validation Attributes)來實現的。以下是一些常用的驗證機制:
C#提供了許多內置的數據注解,這些注解可以直接添加到Model類的屬性上,以定義該屬性的驗證規則。例如:
* `[Required]`:指定該屬性是必填的。
* `[StringLength(max)]`:指定該屬性的最大長度。
* `[Range(min, max)]`:指定該屬性的值必須在指定的范圍內。
* `[EmailAddress]`:指定該屬性應該是一個有效的電子郵件地址。
* `[RegularExpression(pattern)]`:指定該屬性的值必須匹配指定的正則表達式。這些注解可以與ModelValidator類一起使用,該類負責執行實際的驗證邏輯。
除了內置的數據注解外,還可以創建自定義的驗證屬性,以滿足特定的驗證需求。自定義驗證屬性通常繼承自ValidationAttribute類,并重寫Validate方法來執行自定義的驗證邏輯。例如:
public class CustomValidationAttribute : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
// 自定義驗證邏輯
if (value is string str && str.StartsWith("A"))
{
return ValidationResult.Success;
}
else
{
return new ValidationResult("該值必須以'A'開頭。");
}
}
}
然后,可以將自定義驗證屬性添加到Model類的屬性上,就像使用內置的數據注解一樣。 3. ModelState驗證:
在ASP.NET MVC中,ModelState對象用于存儲模型的驗證結果。當模型通過驗證時,ModelState對象中的每個鍵值對都將包含一個有效的狀態碼和值。如果模型未通過驗證,則可以使用ModelState對象來獲取有關錯誤的信息。例如:
[HttpPost]
public ActionResult Create(MyModel model)
{
if (ModelState.IsValid)
{
// 保存模型并執行其他操作
return RedirectToAction("Index");
}
else
{
// 如果模型未通過驗證,則返回視圖并顯示錯誤信息
return View(model);
}
}
在視圖中,可以使用Html.ValidationMessage方法來顯示特定屬性的錯誤消息。
這些是C#中常用的Model驗證機制。根據具體的需求和項目類型,可以選擇適合的方法來實現模型驗證。