jqueryを使用して動的にフィールドを生成し、asp.netでサーバーサイドにする
-
08-07-2019 - |
質問
こんにちは、これは奇妙な質問のように思えるかもしれませんが、私の状況は次のとおりです。
ユーザーが特定の入力フィールドを含む行をクリックして追加できるフォームがあります。これは、JQueryを使用してクライアント側で厳密に行われます。 Request.Formとフィールド名を使用して、asp.net側のポストバックで入力値にアクセスできます。問題は、ページがポストバックすると、フィールドが明らかに消えることです。そのため、エラー検証などを行う方法はありません。ここで私の可能な解決策は何ですか?ポストバックが発生したときにサーバー側で対応するフィールドを動的に生成し、クライアント側で生成されたフィールドから既に読み取った値をユーザーに透過的にする必要がありますか?それは物事のやり方についてのラウンドですか?より良い方法はありますか?
検証情報を返すサーバー側にajaxメソッドを追加することを考えていたので、これを使用して、ポストバックせずにエラーまたはクライアント側ではないことを通知できますが、ポストバックを引き起こすボタンは<!> quot; next <!> quot;ボタンをクリックします。エラーがなければ次のページに移動する必要があります。
誰かが持っているかもしれない洞察と、アプローチの長所と短所を探しています。
ありがとう
解決
入力フィールドを動的に追加する場合は、ポストバック間で持続するために、新しく追加されたフィールドのサーバー側ハッシュを維持し、Page_Initでそれらを再インスタンス化する必要があります。
AJAXのアイデアは良いと思います:
- jQueryを介してサーバー側のメソッドを呼び出します(これは.aspxページの静的メソッドの場合があります)。サーバー側のメソッドは、文字列値をSession-stored
List<String>
に追加します。 - 文字列値を返すメソッドを用意します。これは、ページに追加する要素のIDです。
- jQueryを使用してページに要素を追加します。
- セッション変数を使用して、ポストバック時に動的に追加されたフィールドを再インスタンス化します。
この方法により、クライアント側でフィールドを追加する速度が向上し、動的フィールドがポストバックで消えないようにします。
他のヒント
1)速くて汚い、UpdatePanelを使用できますが、それによってトラフィックのサイズがいくらか増加します。テーブルのマークアップ全体をポストバックすることで、検証コントロールを含めることができます。
2)ある種のCustomValidatorまたはカスタム検証メソッドを使用し、Request.Form値を使用することができます。フィールドを特定する方法があればそれを解決できるはずですが、ポストバックが失敗した場合はそれらの部分を失うためシーンを再作成する必要があります。
3)<!> quot; postback <!> quot;全体を実行できます。 WebMethod呼び出しを介して、すべてを手動で処理します。とにかく、従来のWebFormの要素と、より多くのクライアントサイドモデルを組み合わせて一致させるため、これがおそらく最もクリーンな方法です。