我正在查看一些破壞了SP2010中List項目更改保存的代碼。在Event Receiver的構造函數中,HttpContext被存儲爲局部變量,然後在ItemUpdating最後包含返回URL的查詢參數被檢索並傳遞給SPUtility.Redirect(...)。這具有取消編輯表單中所做更改的效果。因此,我在網上找到了這樣的場景,我將HttpContext存儲爲一個靜態類對象,並將其重定向到事件中,現在編輯已保留,然後重定向到我們期望的位置。在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.
但沒有提出一個可行的解決方案。
還有另一種選擇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卡住了。
有關如何去做這件事的任何想法?
============
編輯:根據要求
因此,有兩個網站一個說稱爲A,這將有一個子網站進一步信息叫做B. A有列表並向該列表添加項目會觸發創建子站點B和其他相關內容的事件接收器。如果我從Bs的SharePoint列表中修改B「item」,那麼我不需要重定向並返回到列表中就沒有問題。如果我正在尋找並在A列出Bs上整齊呈現的甘特圖,如果在單擊「保存」後編輯B,我們需要返回到A.如果我在B上也有編輯按鈕,那麼我想返回到B編輯並單擊保存後。
所以當我們進入編輯屏幕時,我們有了source = additional。從我做的一些閱讀看來,SharePoint似乎會挑選並重定向。編輯頁面上的其中一個字段是A站點下方的相對URL,如果發生更改,則重定向URL將不再有效並拋出404,因此我們用新輸入的值替換舊的B子路徑。但是,我們需要將代碼重定向到新的位置。
該事件接收器的目的是什麼?是否驗證列表項數據? – Vaibhav
我會再次@ Vaibhav的問題,並添加重定向的目的是什麼?根據上下文,您可能會更好地使用客戶端JavaScript而不是服務器端C#來處理重定向。 – Thriggle
我已經添加了一些更多的細節。感謝您的回覆 –