SharePoint SPContext.List на странице настраиваемого приложения

У меня есть настраиваемая страница приложения SharePoint, развернутая в папке _layouts. Это настраиваемая «новая форма» для настраиваемого типа контента. Во время взаимодействия с этой страницей мне нужно будет добавить элемент в свой список. Когда страница загружается впервые, я могу использовать SPContext.Current.List, чтобы увидеть текущий список, с которым я работаю. Но после того, как я заполнил свою форму и форма отправилась обратно на себя и IsPostBack верен, тогда SPContext.Current.List имеет значение null, поэтому я не могу найти список, в который мне нужно добавить свои данные.

Ожидается ли это?

Как мне сохранить некоторую информацию о моем списке контекста во время обратной передачи? Должен ли я просто заполнить элемент управления asp: hidden с помощью guid моего списка, а затем просто вытащить его из него при обратной передаче? Думаю, это кажется безопасным.

FWIW, это стандартная версия MOSS 2007.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
3 732
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Я не использую специальную «новую форму», поэтому это может не применяться. Я добавил приемник событий к своему настраиваемому типу контента, а затем ввел свой собственный код в события ItemAdded или ItemAdding. Этот код срабатывает, когда событие добавляется в список. Вы можете использовать свойства приемника событий, чтобы перейти к родительскому списку, веб-сайту и сайту.

Ответ принят как подходящий

Вообще говоря, я стараюсь копировать любой подход, который использовала группа продуктов, когда хочу добавить свою собственную функциональность. В этом случае они добавляют свои собственные страницы редактирования / просмотра / добавления через само определение списка.

Я создал решение, для которого также требовалась собственная настраиваемая форма «Новая», к сожалению, не с открытым исходным кодом, хотя, если вам интересно, вы можете загрузить ее под названием «Tagged Links» (социальные закладки для SharePoint), и вы можете найти некоторые ссылки на моем блог.

Чтобы дать вам несколько советов и подсказок, следующее должно направить вас в правильном направлении:

  1. Создано новое определение списка.
  2. Создан новый тип контента. В типе контента вы можете определить свои собственные «FormTemplates», которые ссылаются на шаблон рендеринга, который определяет, что будет отображаться в «среднем» бите этих форм.
  3. Скопировал стандартный шаблон рендеринга, но затем внес в него изменения, которые я нужный.
  4. Обернул все это в решение и развернул.

Мой шаблон рендеринга на самом деле включал переопределенную кнопку «Сохранить», где я проделал большую часть дополнительной работы, которую мне нужно было сделать во время сохранения.

В любом случае, на мой взгляд, это немного слишком много, но я думаю, что это наиболее близко соответствует стандартному подходу, принятому разработчиками продукта. Дайте мне знать, если вам нужны более подробные сведения, и я посмотрю, смогу ли я составить пошаговую публикацию в блоге, но, надеюсь, это поможет вам в правильном направлении.

Мне бы хотелось думать, что моя проблема здесь "особенная", поскольку я использую настраиваемую форму. Я решил использовать настраиваемую форму, а не настраиваемый шаблон формы просто потому, что я делаю много вещей, которые не очень похожи на списки SharePoint (выполняю вызовы ajax для получения информации из стороннего приложения, а затем генерирую некоторые элементы динамической формы на основе этот результат ajax, а затем последующая обработка этих данных при обратной передаче). Я подумал, что будет кошмаром попробовать это в обычном механизме настраиваемого шаблона рендеринга.

Я также не думаю, что могу предоставить объявления настраиваемых форм в самом определении списка, потому что у меня есть несколько типов содержимого, связанных с этим списком, и каждый тип содержимого имеет свою собственную настраиваемую форму (другой тип, к счастью, намного проще).

На самом деле, мой простой способ сохранить список guid в моем скрытом поле был очень малоэффективным способом решения этой конкретной проблемы. Меня больше всего беспокоит то, что я не уверен, почему SPContext просто теряет всю свою полезность, когда я делаю обратную передачу здесь, что заставляет меня думать, что я что-то делаю не так.

Я был бы удивлен, если бы вы могли сделать что-то в файле _Layouts, чего нельзя сделать в шаблоне форм. В вашем распоряжении почти такие же технологии.

Глядя на то, как SharePoint работает со страницами ListItems и Layouts (например, «Управление разрешениями» для элемента списка), я вижу, что они передают некоторые переменные через строки запроса: ? obj = {76113B3A-FABA-4389-BC85-4BB2CC5AB423}, 6, LISTITEM & List = {76113B3A-FABA-4389-BC85-4BB2CC5AB423}

Возможно, они каждый раз программно получают контекст, используя эти значения.

Другие вопросы по теме