ASP.Net MVC驗證


驗證是ASP.NET MVC應用程式中的一個重要方面。 它用於檢查使用者輸入是否有效。 ASP.NET MVC提供了一組易於使用的驗證,同時也是檢查錯誤並在必要時向使用者顯示訊息的強大方法。

DRY

DRY代表(Don’t Repeat Yourself )不要重複自己,是ASP.NET MVC的核心設計原則之一。從開發的角度來看,鼓勵只在一個地方指定功能或行為,然後在整個應用程式中使用它。
這樣可以減少編寫的程式碼量,使程式碼編寫起來更容易,更容易維護。

為模型新增驗證

下面來看看,如何為上一章專案新增員工時驗證的一個簡單例子。 在這個例子中,我們將資料註釋新增到模型類,它提供了一些內建的驗證屬性集,可以直接在應用程式中應用到任何模型類或屬性,例如:RequiredStringLengthRegularExpressionRange驗證屬性。

它還包含格式化屬性,如DataType幫助格式化,不提供任何驗證。 驗證屬性指定要對其應用的模型屬性強制執行的行為。

RequiredMinimumLength屬性指示屬性必須具有值; 但是沒有任何東西阻止使用者輸入空白格來滿足這個驗證。RegularExpression屬性用於限制可輸入的字元。

可以通過新增不同的註釋屬性來更新 Employee 類,如以下程式碼所示 -



還需要對資料庫設定限制。 但是,SQL Server物件資源管理器中的資料庫顯示name屬性被設定為NVARCHAR(MAX),如以下截圖所示 -

現在我們還需要對資料庫設定限制。 但是,SQL Server物件資源管理器中的資料庫顯示name屬性被設定為NVARCHAR(MAX),如以下螢幕截圖所示 -

為了在資料庫上設定這個限制,我們將使用遷移來更新模式。

工具 -> NuGet程式包管理器 -> 程式包管理器控制台 開啟程式包管理器控制台視窗。

在軟體包管理器控制台視窗中逐個輸入以下命令。

Enable-Migrations
add-migration DataAnnotations
update-database

以下是在 程式包管理器控制台 視窗中執行這些命令後的紀錄檔。

Visual Studio也將開啟從DbMIgration類派生的類,可以在其中看到更新Up方法中的模式約束的程式碼 -

namespace MVCSimpleApp.Migrations {
   using System;
   using System.Data.Entity.Migrations;

   public partial class DataAnnotations : DbMigration{
      public override void Up(){
         AlterColumn("dbo.Employees", "Name", c => c.String(maxLength: 60));
      }

      public override void Down(){
         AlterColumn("dbo.Employees", "Name", c => c.String());
      }
   }
}

name欄位的最大長度為60,這是資料庫中新的長度限制,如以下快照中所示 -

執行此應用程式並通過指定以下URL轉到建立檢視:http://localhost:63004/Employee/Create -

在這些欄位中輸入一些無效的資料,然後點選 建立 按鈕,如下圖所示 -

看到jQuery用戶端驗證檢測到錯誤,並且還顯示錯誤訊息。