Перенаправление в приемнике событий Sharepoint 2010
Я смотрю на некоторый код, который нарушил сохранение изменений элемента списка в SP2010. В конструкторе приемника событий HttpContext хранится как локальная переменная, затем в ItemUpdating в конце извлекается параметр запроса, содержащий возвращаемый url-адрес, и передается SPUtility.Перенаправлять(...). Это приводит к отмене всех изменений, внесенных в форму редактирования. Поэтому, следуя сценариям so, которые я нашел в Интернете, я сохраняю HttpContext как статический объект класса и перенаправление в событииItemUpdated и редактировании теперь сохраняются с последующим перенаправлением туда, где мы ожидаем.
У меня есть проблема с сохранением HttpContext конкретного пользователя в качестве статического в классе, который потенциально будет захвачен, если другой пользователь сделает то же самое действие между временем, когда пользователь 1 устанавливает контекст изначально и до перенаправления. Пользователь 2 будет перезаписывать контекст, и есть потенциальные проблемы.
Единственный другой вариант I можно подумать, что быстрый выход-это хранить статический словарь, где ключом является идентификатор пользователя, а затем удалить запись непосредственно перед перенаправлением, чтобы не оставлять случайные экземпляры HttpContext.
Итак, глядя на принятое решение из здесь первый ответ 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.
Есть какие-нибудь мысли о том, как это сделать?
============
Edit: дополнительная информация по запросу
Таким образом, есть два сайта, один из которых называется A, который будет иметь подсайт под названием B. У A есть список и добавление элемента в этот список запускает приемники событий, которые создают подсайт B и другие связанные вещи. Если я изменю B "item" от список SharePoint Bs тогда мне не нужно перенаправлять и возвращаться к списку нормально. Если я смотрю и аккуратно визуализирую диаграмму Ганта на листинге Bs, если я редактирую B после нажатия кнопки Сохранить, нам нужно вернуться к A. Если я нахожусь на B, есть кнопка редактирования, поэтому я хочу вернуться к B после редактирования и нажатия кнопки Сохранить.
Таким образом, когда мы переходим к экрану редактирования, у нас есть источник=. Из некоторого чтения, которое я сделал, кажется, что SharePoint возьмет это и перенаправит. Одно из полей на странице редактирования находится относительный url-адрес под сайтом A, и если это изменится, то url-адрес перенаправления больше не будет действительным и выбросит 404, поэтому мы заменим старый путь B sub на новое введенное значение. Но затем нам понадобится код для перенаправления на новое место.
1 ответ:
Я не совсем уверен, правильно ли я понимаю ваши требования. Но я все же попробую. Просто краткое изложение того, что я понял (поправьте меня, если я ошибаюсь...):
- у вас есть корневая сеть в семействе сайтов со списком
- каждая запись в этом списке соответствует дочернему сайту, который будет создан при создании элемента списка (ER) под корневым веб-сайтом в качестве дочернего сайта
- элементы списка можно редактировать как из списка в корневой сети, так и из дочернего сайта It maps to
- при редактировании с дочернего сайта вы хотите вернуться на дочерний сайт после сохранения
Мой подход будет следующим:
- выполните действия, описанные в этой статье диалог SP и список форм
- откройте диалоговое окно на дочернем узле, которое ссылается на форму редактирования корневого веб-узла.
- после сохранения пользователь оказывается уже там, где он должен быть
Надеюсь, это поможет... Ура!
Edit: просто прочитайте требование о изменение url. Создайте пользовательскую форму редактирования, которую вы улучшаете с помощью некоторых js, которые передают значения обратно на исходный сайт -> параметры в диалогах. Затем вы можете отреагировать соответствующим образом в обратном вызове javascript и перенаправить на новый url.
Comments