首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

從醜陋到優雅:伺服器端資料驗證重構之路(續集)

     編輯:關於ASP.NET

延續客戶端驗證主題,本文聚焦伺服器端驗證演進。雖然客戶端驗證提升體驗,但「所有客戶端資料不可信」是鐵律,伺服器端驗證不可省略。

演進三階段

階段一:硬編碼巢狀判斷(反模式)

if (!string.IsNullOrEmpty(str))
{
    if (int.TryParse(str, out var val))
    {
        if (val > 0 && val < 100) { /* success */ }
        else ShowMessage("輸入必須大於0小於100");
    }
    else ShowMessage("無法格式化為整數");
}
else ShowMessage("輸入為空");

缺點:可讀性差、難維護、邏輯耦合、錯誤訊息分散。

階段二:抽取驗證函式(模組化)

protected bool IsInt(string s) { ... }
protected bool IsInRange(int min, int max, int input) { ... }

進步:可重複使用、主邏輯較清晰。缺點:驗證規則仍分散、錯誤訊息處理分離、多欄位組合驗證仍繁瑣。

階段三:驗證屬性 + 模型繫結驗證(現代化)

  • 使用 DataAnnotations(Required、Range、RegularExpression、自訂 ValidationAttribute)。
  • Controller 中 ModelState.IsValid 統一判斷。
  • 搭配 IValidatableObject 實作跨欄位業務規則。
  • 錯誤訊息集中在模型屬性,支援多語系資源檔。

文章呼應系列主題:透過抽象與慣例,讓驗證碼從「醜陋的巢狀判斷」進化為「優雅的宣告式屬性」。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved