NDW

アプリ開発やトラブルシューティング等のノウハウ、キャンプや登山の紹介や体験談など。

1. システムエンジニアリング ASP.NET Core 実装技術

ASP.NET Core: Remote属性の過剰なHTTP要求を抑制

投稿日:2020年7月12日 更新日:

Remote属性は入力欄に対する文字入力やフォーカスが外れたタイミングで、サーバ側検証ロジックを実行できます。例えば、登録対象となるユーザIDが既に実在しないかの検証等、サーバ側でしか検証が難しい場合に有効です。

しかしながら、ユーザが文字を入力する度にサーバ側検証が実行(HTTP要求が発行)されるため、場合によってはネットワークやサーバの過剰な負荷になる可能性があります。
サーバ検証の呼び出しはキーアップイベントに紐づいているため、次のようにキーアップイベントを上書きすることで無効にできます。
(入力欄からフォーカスが外れた場合のみサーバ検証が実行されるようになる。)

...
$(function () {
    $("[data-val-remote]").keyup(function () { return false });
});
<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>
<script src="~/js/site-validation.js"></script>

なお、フォームのサブミット時にRequired属性等のサーバ側の検証ロジックは自動的に実行されますが、Remote属性で指定した検証ロジックは実行されません。そのためサーバ側処理(コントローラ等)で明示的にRemote属性に対応するサーバ側検証ロジックを実行する必要があります。







-1. システムエンジニアリング, ASP.NET Core, 実装技術

関連記事

.NET Core: Microsoft.Graph.Authの正式版予定

.NET CoreでMicrosoft Graphを操作するために、Microsoft Graph API SDK(“Microsoft.Graph”パッケージ)の使用を考えて …

ASP.NET Core: CreditCard属性のjavascriptエラー

Visual Studio 2019でASP.NET Coreプロジェクトを作成して[CreditCard]属性を使用すると、クライアント側で次のエラーが発生します。 Uncaught TypeErr …

TeraTermを使ったSSH鍵の作成方法

WindowsでSSH接続するためのTera Termで、SSH鍵を作成する方法を説明します。 概要 Windows10(64ビット)で動作するTera Term 4.105で動作確認しました。 クラ …

セッションタイムアウトの必要性

「セッションタイムアウトって何で必要なんですかね?」という問いがあった。 その人は「セッションデータの肥大化によるリソース枯渇や性能劣化を防止」という意見。 自分の場合、「それもあるかもしれないが、ど …

Javaでサポートする暗号化アルゴリズム

Java暗号化アーキテクチャ Javaで暗号化処理を実装する場合、Java暗号化アーキテクチャ(Java Cryptography Architecture: JCA)と呼ばれるフレームワークを使いま …