2017-05-03 10 views
7

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サブパスを新しく入力した値に置き換えます。しかし、新しい場所にリダイレクトするコードが必要です。

+0

そのイベント受信者の目的は何ですか?リスト項目のデータを検証するのですか? – Vaibhav

+0

私は@ Vaibhavの質問に2番目になり、リダイレクトの目的は何ですか?状況によっては、クライアント側のJavaScriptのではなく、サーバー側のC#を使用してリダイレクトを処理するより良いことができるかもしれません。 – Thriggle

+0

私はもう少し詳細を追加しました。回答ありがとう –

答えて

2

お客様の要件を正しく理解しているかどうかは不明です。しかし、私はそれを試してみましょう。私が理解したことのちょっとした要約(私が間違っていれば正解...):

  • あなたはそのリスト内の各エントリはサブサイトとして、ルートのWeb以下のリスト項目の作成時に作成されるサブサイト(ER)に対応して、リスト
  • 付きサイトコレクション内のルートWebを持っています
  • リストアイテムは

私のアプローチを保存した後、あなたがサブサイトに戻りたいサブサイトから編集で

  • にルートWebでの一覧だけでなく、それがマッピングさサブサイトからの両方から編集することができます次のようになります:

    1. この記事SP Dialog and List Forms
    2. に記載されている手順に従ってくださいは、ルートWebの編集フォームにリンクサブサイト上のダイアログを開きます。彼はこのことができます...乾杯を

    ・ホープあるべき場所のユーザーを保存した後

  • はすでに自分自身を発見します!

    編集:だけで、URLの変更に関する要件をお読みください。元のサイトに値を戻すいくつかのjsで拡張するカスタム編集フォームを作成します - >Parameters in dialogs。 JavaScriptのコールバックでそれに応じて反応し、新しいURLにリダイレクトすることができます。

  • +0

    ダン私はそれを試して、賞金のための時間が逃げようとしているので、アプローチを確認する時間がありません。あなたが説明したことから、私はあなたが意味するものを見ることができると思うので、私はこの回答を事前に受け入れるでしょう。提案のおかげでヒープ。 –

    +0

    モーダルであれば値を返すことができますか?当社の既存のシステムは、私はあなたが提案してきたように動作するように、すべてを変更する必要があると思います場合は不思議そうモーダルされていませんか? –

    関連する問題