Asp.net-mvc-validation

提供:Dev Guides
移動先:案内検索

ASP.NET MVC-検証

検証は、ASP.NET MVCアプリケーションの重要な側面です。 ユーザー入力が有効かどうかを確認するために使用されます。 ASP.NET MVCは、使いやすい検証セットを提供すると同時に、エラーをチェックし、必要に応じてユーザーにメッセージを表示する強力な方法でもあります。

DRY

DRYは Do n’t Repeat Yourself の略で、ASP.NET MVCのコア設計原則の1つです。 開発の観点からは、機能または動作を1つの場所でのみ指定し、その1つの場所からアプリケーション全体で使用することをお勧めします。

これにより、作成する必要があるコードの量が減り、作成するコードのエラーが少なくなり、保守しやすくなります。

モデルへの検証の追加

前章のプロジェクトでの検証の簡単な例を見てみましょう。 この例では、モデルクラスにデータアノテーションを追加します。これにより、* Required、StringLength、RegularExpression、、 *Rangeなど、アプリケーションのモデルクラスまたはプロパティに直接適用できる検証属性の組み込みセットが提供されます。 検証属性。

また、フォーマットを支援し、検証を提供しないDataTypeなどのフォーマット属性も含まれます。 検証属性は、適用されるモデルプロパティに適用する動作を指定します。

Required属性とMinimumLength属性は、プロパティに値が必要であることを示しています。しかし、この検証を満たすためにユーザーが空白を入力することを妨げるものは何もありません。 RegularExpression属性は、入力できる文字を制限するために使用されます。

次のコードに示すように、異なる注釈属性を追加してEmployeeクラスを更新しましょう。

using System;
using System.ComponentModel.DataAnnotations;
using System.Data.Entity;

namespace MVCSimpleApp.Models {
   public class Employee{
      public int ID { get; set; }
      [StringLength(60, MinimumLength = 3)]

      public string Name { get; set; }
      [Display(Name = "Joining Date")]
      [DataType(DataType.Date)]
      [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}",

      ApplyFormatInEditMode = true)]
      public DateTime JoiningDate { get; set; }
      [Range(22, 60)]
      public int Age { get; set; }
   }
}

次に、データベースに制限を設定する必要があります。 ただし、次のスクリーンショットに示すように、SQL Serverオブジェクトエクスプローラーのデータベースには、nameプロパティがNVARCHAR(MAX)に設定されています。

NVARCHAR(MAX)

データベースにこの制限を設定するには、移行を使用してスキーマを更新します。

[ツール]→[NuGetパッケージマネージャー]→[パッケージマネージャーコンソール]から[パッケージマネージャーコンソール]ウィンドウを開きます。

パッケージマネージャーコンソール

*Package Manager Console* ウィンドウで、次のコマンドを1つずつ入力します。
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());
      }
   }
}

[名前]フィールドの最大長は60です。これは、次のスナップショットに示すように、データベースの新しい長さの制限です。

新しい長さの制限

このアプリケーションを実行し、次のURL http://localhost:63004/Employees/Create を指定して作成ビューに移動します

Localhost Employees Create

次のスクリーンショットに示すように、これらのフィールドに無効なデータを入力し、[ボタンを作成]をクリックします。

無効なデータを入力

jQueryクライアント側の検証でエラーが検出され、エラーメッセージも表示されることがわかります。