Событие обновления элемента Sharepoint - отменить событие обратно на страницу editform?
-
20-09-2019 - |
Вопрос
У меня есть приемник событий для типа контента для проверки некоторых данных в событии ItemUpdating.Если я отменяю событие (например, некоторые данные недействительны), я устанавливаю свойствам cancel значение true:
properties.Cancel = true;
properties.ErrorMessage = "...";
SharePoint отменяет событие обновления ok, но показывает стандартную страницу ошибок SharePoint (с указанным сообщением).Единственная проблема в том, что у меня есть жалоба на то, что на самом деле это не очень полезно - мы должны вернуться на страницу EditForm, чтобы детали могли быть обновлены.
Кто-нибудь делал это, есть ли простой способ?Единственное предложение, которое у меня было, - это то, что я могу реализовать свою собственную страницу ошибок, но это звучит довольно сложным решением для (теоретически) простого процесса.
Решение
Вы могли бы попробовать вывести HTML-код (который также включает javascript) в ErrorMessage.НО даже если вы это сделаете, проблема в том, что у вас нет безопасного способа вернуться к данным, введенным пользователем.Либо вы делаете перенаправление HTTP / 301, а затем загружается новая страница, либо вы заставляете клиента перейти history.back()
с помощью JavaScript, а затем браузер может перезагрузить страницу.
Официальный способ сделать это заключается в том, что вы создаете определение списка и настраиваете шаблон списка.Затем вы редактируете редактирование шаблона формы и содержать как можно больше элементов управления ASP.Net по мере необходимости.Затем реализуйте логику на стороне сервера так, как вам нужно.В этой статье объясняется эта техника: http://msdn.microsoft.com/en-us/library/aa543922.aspx
Редактировать:Чтобы прикрепить пользовательский элемент управления для редактирования определенного типа контента, вы добавляете раздел XmlDocuments к своему определению типа контента.Например, вот так
<ContentType
..........
<XmlDocuments>
<XmlDocument NamespaceURI="http://schemas.microsoft.com/sharepoint/v3/contenttype/forms">
<FormTemplates xmlns="http://schemas.microsoft.com/sharepoint/v3/contenttype/forms">
<Display>ContentTypeName_DispForm</Display>
<Edit>ContentTypeName_EditForm</Edit>
<New>ContentTypeName_NewForm</New>
</FormTemplates>
</XmlDocument>
</XmlDocuments>
.......
Затем вы создаете свой собственный yoursolution_controltemplates.ascx
файл, который содержит также такие блоки:"
<SharePoint:RenderingTemplate ID="ContentTypeName_DispForm" runat="server">
<Template>
<!-- put whatever controls you need here, we typically create a
separate custom control which implements everything-->
</Template>
</SharePoint:RenderingTemplate>
Другие советы
Вы можете попробовать перенаправить с помощью CopyUtil : http://weblogs.asp.net/jan/archive/2008/02/26/copyutil-aspx-a-little-sharepoint-gem.aspx
ссылка = "http://yoursite/_layouts/CopyUtil.aspx?Use=id&Action=dispform&ItemId=X&ListId=X&WebId=X&SiteId=X";
Страница.Ответ.Перенаправление (ссылка)
может быть, это сработает