我有一个事件接收,用于内容类型,来验证某些数据在ItemUpdating事件。如果我取消的事件(一些数据不是有效的,例如),我的性取消以真实的:

properties.Cancel = true;
properties.ErrorMessage = "...";

SharePoint取消的新事件的确定,但显示了标准SharePoint错误的网页(与指定的信息)。唯一的问题是,我已经有了一个申诉,这并不是实际上非常有用的-我们应该回到EditForm页,以便详细信息可以更新。

有没有人做到了这一点,是否有一个简单的方法吗?唯一的建议,我是,我就可以实现我自己的错误页,但是,听起来相当重解决一个(在理论上)简单的过程。

有帮助吗?

解决方案

您可以尝试在输出的ErrorMessage HTML代码(其包括JavaScript的为好)。但即使你做的,问题是你有没有安全的方式返回给用户输入的数据。要么你做一个HTTP / 301重定向,然后它是一个新的页面负载,或者你让客户去history.back()与JavaScript,然后在浏览器可能会重新加载页面。

这样做的正式方式是创建一个列表定义和自定义列表模板。然后就可以编辑编辑表单模板,并根据需要包括尽可能多的ASP.Net验证控件。然后,实现服务器端逻辑,因为你需要。本文介绍了该技术: http://msdn.microsoft.com/en-我们/库/ aa543922.aspx

编辑:要附加特定的contentType的编辑自定义控制,添加一个XmlDocuments部分您的ContentType定义。例如,像这样的

<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>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top