SP2010のリスト項目の変更を保存していないコードがあります。イベント受信者のコンストラクタでは、HttpContextがローカル変数として格納されています。ItemUpdating最後に戻りURLを含むクエリパラメータが取得され、SPUtility.Redirect(...)が渡されます。これは、編集フォームで行われた変更を取り消す効果があります。したがって、私がオンラインで見つけたシナリオに従えば、静的クラスオブジェクトとしてHttpContextを保存して、ItemUpdatedイベントと編集のリダイレクトが継続され、次に期待される場所にリダイレクトされます。Sharepoint 2010イベントリダイレクトでリダイレクト
特定のユーザーのHttpContextをクラスに静的に格納することで、ユーザーが最初にコンテキストを設定してからリダイレクトするまでの間に別のユーザーが同じ操作を行うと、ハイジャックされる可能性があります。ユーザー2はコンテキストを上書きし、潜在的な問題があります。
他の唯一の選択肢は、キーがユーザーIDである静的ディクショナリを保存し、リダイレクトする直前にエントリを削除して、迷子HttpContextインスタンスが漏れないようにすることです。
したがって、hereから受け入れられた解決策を見て、servy42の最初の応答はThe fact that it works for a few trivial test cases at first doesn't make it a viable solution.
ですが、実行可能な解決策は示唆されていません。
もう1つのオプションbest approach may be changing Save Button in ribbon such that when clicked, a ECMA script first save your Item, then redirect to other page, or open other page in dialog.
がさらに提案されていますが、その唯一の他の方法はありますか?
私はかなり新しいSPですが、不幸にもSP2010に悩まされている間に、私の限られた知識で間違ったやり方で操作することを試みています。
これについてのご意見はありますか?
============
編集:要求された
としてさらに詳細だから、1が言う2つのサイトが存在し、サブサイトを持つことになりますどのB. Aが持っていると呼ばれると呼ばれますリストを作成し、そのリストに項目を追加すると、サブサイトBおよびその他の関連するものを作成するイベント受信者がトリガーされます。私がBsのSharePointリストからB "アイテム"を変更すると、リダイレクトする必要はなく、リストに戻っても問題ありません。もし私が探していて、ガントチャートがきれいに表示されているなら、Bをクリックした後にBを編集したら、私に戻る必要があります。私がBにいれば、編集ボタンもあります。 Bをクリックして保存します。
編集画面に行くと、source =が追加されます。私が行ったいくつかの読書から、SharePointはそれを選択してリダイレクトするようです。編集ページのフィールドの1つは、Aサイトの下にある相対URLです。変更された場合、リダイレクトURLはもはや有効でなくなり、404を投げて、古いBサブパスを新しく入力した値に置き換えます。しかし、新しい場所にリダイレクトするコードが必要です。
そのイベント受信者の目的は何ですか?リスト項目のデータを検証するのですか? – Vaibhav
私は@ Vaibhavの質問に2番目になり、リダイレクトの目的は何ですか?状況によっては、クライアント側のJavaScriptのではなく、サーバー側のC#を使用してリダイレクトを処理するより良いことができるかもしれません。 – Thriggle
私はもう少し詳細を追加しました。回答ありがとう –