0

こんにちは、これは奇妙な質問のように思えるかもしれませんが、私の状況は次のとおりです。

ユーザーが特定の入力フィールドを含む行をクリックして追加できるフォームがあります。これは、JQueryを使用してクライアント側で厳密に行われます。Request.Formとフィールドの名前を使用して、asp.net側のポストバックの入力値にアクセスできます。これで問題ありません。問題は、ページがポストバックすると、フィールドが明らかに消えることです。そのため、エラー検証などを行う方法がありません。ここで私の可能な解決策は何ですか?ポストバックが発生したときにサーバー側で対応するフィールドを動的に生成し、クライアント側で生成されたフィールドから既に読み込まれた値を配置して、ユーザーに透過的にする必要がありますか?それは物事のやり方についてのラウンドですか?もっと良い方法はありますか?

サーバー側にajaxメソッドを追加して検証情報を返すことを考えていました。これを使用して、エラーなどを通知することができますが、ポストバックすることなくクライアント側ではありませんが、ポストバックを引き起こすボタンは「次へ」です。ボタンをクリックします。エラーがない場合は、次のページに移動する必要があります。

私は誰かが持っているかもしれないより多くの洞察とアプローチの賛否両論を探しています。

ありがとう

4

2 に答える 2

1

入力フィールドを動的に追加する場合は、新しく追加されたフィールドのサーバー側ハッシュを維持し、Page_Init でそれらを再インスタンス化して、ポストバック間で永続化する必要があります。

あなたのAJAXのアイデアは良いと思います:

  1. jQuery を介してサーバー側メソッドを呼び出します (これは、.aspx ページの静的メソッドにすることができます)。サーバー側メソッドは、文字列値を Session-stored に追加しますList<String>
  2. ページに追加する要素の ID である文字列値をメソッドに返すようにします。
  3. jQuery を使用してページに要素を追加します。
  4. セッション変数を使用して、動的に追加されたフィールドをポストバックで再インスタンス化します。

この方法により、クライアント側でフィールドを追加する速度が向上し、動的フィールドがポストバックで消えることがなくなります。

于 2009-10-28T15:57:14.483 に答える
1

1) 迅速かつ汚い、UpdatePanel を使用できますが、トラフィックのサイズがいくらか増加します。テーブルのマークアップ全体をポストバックすることで、検証コントロールを含めることができます。

2) ある種の CustomValidator またはカスタム検証メソッドを使用して、Request.Form 値のみを使用できます。フィールドを識別する何らかの方法がある限り、それを解決できるはずですが、ポストバックが失敗した場合は、それらの部分が失われるため、シーンを再作成する必要があります。

3) WebMethod 呼び出しを介して「ポストバック」全体を実行し、すべてを手動で処理できます。とにかく、従来の WebForms のものとより多くのクライアント側のモデルを組み合わせて一致させるため、これはおそらく最もクリーンな方法です。

于 2009-10-28T15:57:40.850 に答える