1

ASP.NET Validatorを使用して、 WebFormの多数の入力を検証することにしました。クライアント側では問題なく動作します。つまり、「ページを元に戻す」などを行わずに入力を検証してもまったく問題ありません。

しかし、コードビハインドでバリデーターを使用しようとすると、そのPage.Isvalid属性が得られ、その信頼性に混乱します。自分で答えられなかった質問は次のとおりです。

  1. Validator はクライアント側で使用するのに十分信頼できますか? (javascriptを無効にする以外に、操作できますか?)
  2. この Validator はどのようにしてサーバー側の有効性情報に到達しますか? (生成された C# Validator コードはどこかにありますか、それともクライアント側から直接情報を取得しますか?)

サーバー側でも入力を検証するために書いたコードは次のとおりです。

foreach (IValidator iValidator in Page.Validators)
            {
                if (!iValidator.IsValid) { return false; }
            }

しかし、それは .aspx や .js から独立していますか? サーバー側で信頼できますか?

4

1 に答える 1

2

サーバー側でも常に検証する必要があります。これは、ほとんどの場合、 を呼び出すことによって自動的に行われますPage.Validate

MSDNから:

このメソッドは、 CausesValidationプロパティが既定値の true に設定されている ASP.NET サーバー コントロールをユーザーがクリックすると呼び出されます。これには、Button、ImageButton、および LinkBut​​ton Web サーバー コントロール、HtmlInputButton、HtmlInputImage、および HtmlButton HTML サーバー コントロール、および TextBox、CheckBox、ListControl、および BulletedList コントロールなどのサーバーに自動的にポスト バックできるコントロールが含まれます。

別の検証を強制したい場合は、ValidationGroup手動で呼び出すことができます:

Page.Validate("MyValidationGroup");
If(Page.IsValid)
{
    // ...
}

Page.IsValidメソッドを呼び出した後にのみ確認するか、フォーム処理を開始した ASP.NET サーバー コントロールのイベント ハンドラーでプロパティを true にPage.Validate設定する必要があることに注意してください。CausesValidationOnServerClick

于 2013-02-12T14:32:12.967 に答える