1

私はasp.netサーバーコントロールを持っています(定義にasp:があります)。ボタンはポストバックを行うように設定されています。

サーバー側では、クリック時のイベント ハンドラー (btnSave_click() など) があります。

クライアント側では、クリック イベントで呼び出される JavaScript 関数があります。例: btnSave.Attributes.Add("onclick","javascript: return CheckIsDirty();")

これら2つがどの順序で実行されるかはわかりません。最初にクライアント側で、実際にデータを保存する前に、まだ入力されていないデータ入力フィールドについて警告する必要があるためです。

何か助けはありますか?

4

4 に答える 4

3

最初はクライアント側、2 番目はサーバー側です。

だからあなたはそれを使うことができます。

次のような場合にも使用します。

close.Attributes["OnClick"] = "return confirm('Are you sure?')";

この場合、ユーザーが「いいえ」を押すと、サーバー側のイベント ハンドラーは役割を果たしません。

于 2008-10-15T11:02:05.977 に答える
2

ここでの秘訣は、テストが失敗した場合にこのグローバル変数 "Page_IsValid" を false に設定することであり、これによりポストバックが停止します。

サーバー側とクライアントの両方の検証について説明しているこのページhttp://msdn.microsoft.com/en-us/library/aa479045.aspxを読んでください。使用できる良いコード例があります。

于 2008-10-15T11:08:12.907 に答える
1

onClick JavaScript イベントを設定する方法は、ASP.NET イベント ハンドラーを上書きするため、実際にはポストバックを防ぎます。意図した検証を行う正​​しい方法は次のとおりです。

btnSave.Attributes.Add("onclick", "CheckIsDirty();" + GetPostBackEventReference(btnSave).ToString());

JavaScript で最初に CheckIsDirty() メソッドを呼び出し、次に ASP.NET ポストバック メソッドを呼び出すように、GetPostBackEventReference の結果を追加することに注意してください。メソッドが true を返すと仮定すると、ボタンが投稿されます。false が返された場合、ポストバックは発生しません。

それはあなたが達成しようとしていることのように聞こえますか?

于 2008-10-15T12:01:23.517 に答える
0

それがクライアント側で何を意味するのか、サーバー側で何を意味するのか、そしてそれらがどのように関連しているかについて、もっとよく理解する必要があると思います. ますます多くの開発者がそれを台無しにするのを見てきました。

もちろん、クライアント側が最初に実行されます。実際には、サーバー コードの実行後にそれを実行する方法はありません (手動で何かを行う場合を除く)。簡単な説明をしようと思います:

サーバーにあるものは何でも、クライアント上で HTML を生成し、ユーザーは常にクライアント上で対話します。したがって、ユーザーがクリックしている html ボタンがあります。ブラウザが行うことは、それに関連付けられた JavaScript を実行することです。または、JavaScript が指定されておらず、ボタンが送信ボタンである場合、フォームが送信されます。生成された html を確認すると、onclick イベントに対して、追加したスクリプトの後に、実際にフォームをサーバーに送信する自動生成されたスクリプトが続くことがわかります。サーバー側のコードは、ページが送信される場合にのみ実行されます。

于 2008-10-15T11:07:00.740 に答える