0

ツリービューWebパーツを作成しました。ノードをクリックすると、SPListが変更され、ツリービューがクリアされて再作成されます。

したがって、ノードをクリックすると、ページが更新され、ツリービュー機能が実行されてリストが編集され、ツリービューが再作成されます。次に、F5キーを押してページを更新すると、同じことが再び発生します。つまり、ノードをクリックしなくてもリストが再度変更されます。

ツリービューノードのselectchangeイベントのようなものが再びアクティブ化されたのではないかと思います。

同様に、これは私が更新を押したときに起こります:

ここに画像の説明を入力してください

どういうわけかツリークリックフラグか何かを再送していますか?更新時にクリアして、再送を試みないようにするにはどうすればよいですか?

4

1 に答える 1

1

ユーザーがページを更新することによってポストバックで実行されるアクションが繰り返し呼び出されないようにするための2つの一般的なアプローチがあります。

  1. 彼らが実行しているコードが何であれ、彼らがこれからやろうとしていることをすでに行っているかどうかを確認するために、ある種のチェックを行います。これは簡単な場合もあり(つまり、クリックしてアイテムを削除したが、すでに削除されているように見えます)、不可能または実用的でない場合もあります。

  2. 繰り返されたくないポストバックを実行した後、Response.Redirect(別のページ、または同じページにさえ)を実行します。更新を押したときにこれを行うと、「最後のアクション」はパストバックではなくなり、リダイレクトの結果になります。もちろん、彼らが彼らの歴史を使って「戻る」ことを始めた場合、彼らはあなたが以前にしたどんな行動でも簡単にやり直すことになりかねません。この一連のアクションは、意図的に(または悪意を持って)アクションを複製することを阻止するものではなく、誤ってアクションを複製することなく「更新」を押すことを許可するだけです。また、これにはコストがかかることに注意してください。クライアントとの間で別の操作を実行する必要があり、ページ全体を再生成する必要があります(これにはパフォーマンスコストがかかる可能性がありますが、

于 2012-08-20T17:02:26.950 に答える