0

ASP.NET にいくつかのコントロールがある場合は、もちろん、クライアント側とサーバー側の両方の検証を使用することをお勧めします。使いやすさのためのクライアント側と、セキュリティ上の目的のためのサーバー側。

ただし、これは簡単に非常に醜くなります。もちろん、検証が長さチェックまたは正規表現である場合、保守は簡単です。ただし、検証がより高度であるとしましょう - どうすればよいでしょうか?

1 つの方法は、サーバー コードと Javascript の両方でまったく同じ機能を実装することです。もう 1 つの方法は、両方が同じロジックで Web サービスを呼び出すことですが、AJAX 呼び出しは同期する必要があり、これは一般的に悪い習慣です。

それで、私の質問は、サーバー側とクライアント側の両方の検証を実行する最良の方法は何ですか?

4

2 に答える 2

1

ajax呼び出しは、検証のために同期している必要はありません。迅速である必要があります:

  • たとえば、ユーザーがフィールドをタブオフすると、サービスに対してajax呼び出しが行われ、フィールドの横にスピナーが表示され、サーバーがデータを検証していることが示されます。
  • サービスが成功を返すと、スピナーは緑色のチェックマークに置き換えられます。
  • サービスが失敗を返す場合は、おそらく説明テキスト付きの赤いX。
  • ユーザーが最後に[送信]をクリックすると、サーバーで同じ検証が行われます(同期的かどうかは関係ありません)。

もう1つのオプション(JSを使用する@ user133811は両方の場所にあります)は、選択した言語をJavaScriptにコンパイルするクロスコンパイラーを見つけることです。ただし、これらは利用できる場合とできない場合があります。

私は一般的に、クライアントで複雑な検証を行うことは不要であり、望ましくないことを発見しました。はい、フィールドが必要か、ユーザー名が(ajax経由で)存在するか、または単純なものであるかを知らせてください。ただし、これが複雑な住宅ローンの申し込みなどである場合は、含める必要があることを確認する前に送信する必要があります。私のペットの金魚を共同署名者として宣言した場合の私のW2(または何でも、あなたはポイントを取得します)。

于 2012-10-19T20:45:29.480 に答える
-1

the same code for server and client would mean that your server needs to use JS. Node could be something you could potentially use.

于 2012-10-19T20:20:21.307 に答える