當前位置: 妍妍網 > 碼農

詳解.NET Model ValidationAttribute的使用

2024-02-22碼農

在.NET 開發中,模型驗證是一個重要的環節,它確保了應用程式中的數據完整性和一致性。ASP.NET Core MVC 框架提供了一套強大的數據驗證機制,其中 ValidationAttribute 是一個核心元件。透過使用不同的驗證內容,開發者可以在模型類上定義驗證規則,這些規則會在模型繫結時自動執行。

本文將詳細介紹如何在.NET 中使用 ValidationAttribute ,包括常見的驗證內容以及如何自訂驗證內容。

內建的 ValidationAttribute

ASP.NET Core 提供了一系列內建的 ValidationAttribute ,這些內容可以直接套用於模型類的內容上,以定義驗證規則。以下是一些常用的驗證內容:

  1. RequiredAttribute - 確保內容不為 null 或空字串。

  2. RangeAttribute - 確保內容值在指定範圍內。

  3. StringLengthAttribute - 確保字串內容的長度在指定範圍內。

  4. RegularExpressionAttribute - 使用正規表式驗證內容值。

  5. CompareAttribute - 比較兩個內容的值是否相同。

  6. EmailAddressAttribute - 驗證內容值是否符合電子信件地址的格式。

  7. UrlAttribute - 驗證內容值是否是一個有效的 URL。

使用範例

下面是一個簡單的模型類範例,展示了如何使用內建的 ValidationAttribute

public classUserModel
{
[Required(ErrorMessage = "使用者名稱是必填項")]
publicstring Username { getset; }
[Required(ErrorMessage = "密碼是必填項")]
[StringLength(100, MinimumLength = 6, ErrorMessage = "密碼長度必須在6到100個字元之間")]
publicstring Password { getset; }
[Required(ErrorMessage = "電子信件是必填項")]
[EmailAddress(ErrorMessage = "請輸入有效的電子信件地址")]
publicstring Email { getset; }
}

在上面的範例中, Username Password Email 內容上分別套用了 RequiredAttribute StringLengthAttribute EmailAddressAttribute 。這些內容定義了驗證規則,並指定了錯誤訊息,這些錯誤訊息將在驗證失敗時顯示給使用者。

自訂 ValidationAttribute

除了使用內建的驗證內容,你還可以根據需要自訂驗證內容。要建立自訂的 ValidationAttribute ,你需要繼承 ValidationAttribute 類,並重寫 IsValid 方法。下面是一個簡單的自訂驗證內容的範例:

public classCustomValidationAttribute : ValidationAttribute
{
protectedoverride ValidationResult IsValid(objectvalue, ValidationContext validationContext)
{
// 在這裏編寫自訂驗證邏輯
// 如果驗證透過,返回 ValidationResult.Success
// 如果驗證失敗,返回一個新的 ValidationResult,包含錯誤訊息
if (valueisstring strValue && !strValue.StartsWith("Custom"))
{
returnnew ValidationResult("值必須以 'Custom' 開頭");
}
return ValidationResult.Success;
}
}

然後,你可以像使用內建驗證內容一樣在模型類中使用自訂驗證內容:

public classCustomModel
{
[CustomValidation]
publicstring CustomValue { getset; }
}

模型驗證過程

在 ASP.NET Core MVC 中,模型驗證通常發生在以下兩個階段:

  1. 模型繫結階段 - 當請求數據被繫結到模型時,所有的驗證內容都會被觸發。如果驗證失敗,模型狀態將包含錯誤資訊,並且你可以透過檢視來顯示這些錯誤資訊。

  2. 操作方法驗證階段 - 在控制器操作方法被呼叫之前,ASP.NET Core 會自動執行模型驗證。如果模型驗證失敗,操作方法將不會被呼叫,並且客戶端會收到一個 400 Bad Request 響應。

顯示驗證錯誤

在檢視中,你可以使用 ModelState 來檢查驗證錯誤,並顯示相應的錯誤訊息。例如,在 Razor 檢視中,你可以使用以下程式碼來顯示錯誤訊息:

<div>
<labelasp-for="Username"></label>
<inputasp-for="Username" />
<spanasp-validation-for="Username" class="text-danger"></span>
</div>
<div>
<labelasp-for="Password"></label>
<inputasp-for="Password"type="password" />
<spanasp-validation-for="Password" class="text-danger"></span>
</div>
<div>
<labelasp-for="Email"></label>
<inputasp-for="Email" />
<spanasp-validation-