Событие обновления элемента Sharepoint - отменить событие обратно на страницу editform?

StackOverflow https://stackoverflow.com/questions/2050466

  •  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";

Страница.Ответ.Перенаправление (ссылка)

может быть, это сработает

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top