代码之家  ›  专栏  ›  技术社区  ›  marcus.greasly

SharePoint项目更新事件-取消事件返回到EditForm页?

  •  1
  • marcus.greasly  · 技术社区  · 15 年前

    我有一个内容类型的事件接收器来验证itemupdating事件中的一些数据。如果取消事件(例如,某些数据无效),则将属性Cancel设置为true:

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

    SharePoint取消更新事件“确定”,但显示标准的SharePoint错误页(带有指定的消息)。唯一的问题是,我有一个抱怨,这实际上不是很有用-我们应该返回到editform页面,以便可以更新细节。

    有人这样做吗?有简单的方法吗?我唯一的建议是我可以实现我自己的错误页面,但这听起来是对一个(理论上)简单过程的一个很重的解决方案。

    2 回复  |  直到 15 年前
        1
  •  3
  •   naivists    15 年前

    您可以尝试在错误消息中输出HTML代码(也包括javascript)。但即使这样,问题是您没有安全的方法返回用户输入的数据。要么进行HTTP/301重定向,然后进行新的页面加载,要么让客户机运行 history.back() 使用javascript,然后浏览器可以重新加载页面。

    正式的方法是创建一个列表定义并自定义列表模板。然后编辑编辑表单模板,并根据需要包含尽可能多的ASP.NET验证程序控件。然后,根据需要实现服务器端逻辑。本文介绍了该技术: http://msdn.microsoft.com/en-us/library/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>
    
        2
  •  0
  •   Ciprian Grosu    15 年前
    推荐文章