これは問題だと思いますが、bad idea
ユーザーごとにフォームごとに複数のリクエストがあるという事実と、ユーザーがスペルを間違えたフィールドを編集するために戻った場合、追加のリクエストがあるという事実は別として、多くの無駄...これに関する私の意見は別として、ここから始めることができます:
これをクライアント (つまり、ユーザーの Web ブラウザー) でのユーザー インタラクションから発生させたいと考えてください。ユーザーがあるテキスト ボックスから別のテキスト ボックスに移動するたびに AJAX 呼び出しを行う必要があります。
AJAX を使用したい場合は、使用できる優れた Ajax メソッドがいくつか含まれているjQueryを調べる必要があります。
ユーザーは、Tab キーを押すかマウスをクリックすることでテキストボックスから移動できるため、これらのイベントの両方を処理する必要があります。ここでのキーワードはfocus
であり、これに対応するイベントが発生します。jQuery では、メソッドを使用できます.Blur()
。
さて、おそらく各テキストボックスで同じコードを何度も書き直したくはないので、必要な jQuery が組み込まれている AutoUpdateTextBox などcustom class
から派生した を作成することを検討することをお勧めします。 TextBox
JavaScript 関数が必要なのは 1 回だけで、TextBoxID や Value などのパラメーターを渡すことができるため、大量の JavaScript を出力するだけではいけません。
最後に、この AJAX 呼び出しを受け入れてデータベースを更新するハンドラーが必要です。1 つを作成する方法は 5000 万通りあります。ASP.net Web フォームを使用している場合は、ASHX ハンドラーを作成し、適切なデータベース保存ロジック (より適切にはデータ層アクセス ロジック) をそのハンドラーに追加できます。ハンドラーはページではなく、いくつかのパラメーターを取り、結果を返す URL として機能します。asp.net LifeCycle は実行しません。
または、ASP.net MVC を使用している場合は、ルートを設定し、コントローラーでこれを処理して、応答ストリーム全体として true/false 値を返すか、Ankur Singhal の回答で提案されているように JSON を返すことができます。Web フォームの方が簡単かもしれません。
Web サービスまたは WCF サービスを作成することもできますが、本当に必要なのは基本的なハンドラーだけです。
完全な解決策を提供することなく、これが開始するのに十分であることを願っています. 概要を説明したコンポーネントを 1 つずつ完全なセットとして見始めると、やりたいことを実現できます。
ユーザーが新しいテキストボックスに移動するたびに更新せずにこれを行う方法を考える方が賢明でパフォーマンスが高いかもしれません。特定のイベント(ユーザーがページの「次へ」ボタンをクリックするか、「後で保存」ボタンを提供するとします)の後、全体の値で AJAX リクエストを起動する JavaScript オブジェクトをページに保持できます。フォームをハンドラーまたは Web サービスに送信します。
上記の概要でここで重要なのは、それが理にかなっていることを願っていますが、あなたが言及したような要件がある場合、それをさまざまなコンポーネントに分解したいということです。プログラミングをすればするほど、「自分のプロジェクトやアイデアを小さなパーツに分解する方法」が簡単になります。
パーツの概要を把握したら、各パーツの作成を開始できます。行き詰まったときに、行き詰まっていることについて具体的な質問をすると、SO の人々が喜んで助けてくれます。
彼らが言うように、「どうやってゾウを食べますか? - 一度に一口ずつ!」(実際にゾウでテストした人は誰も知りませんが、要点はわかります...)
幸運を!