ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript – 客户端对象模型(ECMAScript)中SPContet.Current.ListItem的等效项

2019-06-26 13:33:14  阅读:213  来源: 互联网

标签:javascript publishing sharepoint


我正在通过开发SharePoint 2010网站的编辑器可用的自定义功能区选项卡,组,控件和命令,将外部应用程序集成到SharePoint 2010.功能区命令使用对话框框架打开包含自定义应用程序页面的对话框.

为了将大量查询字符串参数传递给自定义应用程序页面,我因此在客户端对象模型(ECMAScript)中寻找等效的SPContext.Current.ListItem.

关于可以在声明性XML中使用的可用令牌(即{ListItemId}或{SelectedItemId}),我已经发出了所有令牌,但不幸的是,在发布页面的上下文中,所需的令牌既不会被解析也不会被解析为null (即http://domain/pages/page.aspx).因此,没有任何渲染的tokes用于在应用程序页面中建立调用SPListItem的上下文.

查看SP.ClientContext.get_current()提供了大量有关当前SPSite,SPWeb等的信息,但没有关于我当前定位的当前SPListItem(再次,在发布页面的上下文中呈现页面) .

到目前为止我想出的是传递当前页面的url(即document.location.href)并在应用程序页面中解析它的想法 – 但是,感觉我走错了方向,SharePoint当然应该能够提供这些信息.

解决方法:

我不确定这是一个很好的答案,甚至完全是主题,但基本上我原本打算博客 – 无论如何:

客户端OM似乎没有提供具有当前SPListItem的细节的方法/属性,这确实是一种痛苦.但是,我冒昧地说这是一个简单的概念,但实际上在SharePoint中具有相当广泛的含义,直到你停下来思考它才会显现出来.

考虑:

>虽然存在重定向,但可以在2个或3个不同的URL上显示讨论帖(例如Threaded.aspx / Flat.aspx)
>同样,一对博客上可以存在一篇博文(Post.aspx / EditPost.aspx,也许还有一篇)
>列表项显然有DispForm.aspx / EditForm.aspx和(有点)NewForm.aspx
>对于具有关联SPFile的项目(例如文档,发布页面),请考虑这些URL代表相同的项目:
http://mydomain/sites/someSite/someLib/Forms/DispForm.aspx?ID=x,http://mydomain/sites/someSite/someLib/Filename.aspx
>此外,在此集合之外可能还有其他内容类型具有类似的交易

在我们的例子中,我们希望将数据“挂起”内部和外部项目(例如,喜欢,评论).我们认为“SharePoint中的所有内容都有一个URL,因此这可能是识别项目的明智方法”.很大的错误,我仍然在努力陷入其中.如果我们想以这种方式使用URL,那就好像我们需要API中的某种’normalizeUrl’方法.

您是否注意到Microsoft.SharePoint.Utilities中的PageUrlNormalization课程?听起来很有希望不是吗?不幸的是,这似乎做了一些我上面描述的事情 – 它不适用于内容类型等的变体(但确实处理扩展的Web应用程序,HTTP / HTTPS等).

简而言之,我们认为最好的方法是让服务器发出详细信息,这样我们就可以在传回服务器时识别当前的SPListItem(例如,在AJAX请求中).我们将“规范”列表项ID隐藏在JavaScript变量或隐藏的输入字段中(无论是什么),并在返回服务器时重新获取列表项进行评估.不如从上下文获取所有内容有效,但对我们而言,这是可以的,因为我们只需要在用户点击某些内容时解决,而不是在每个页面加载时解决.通过规范,我的意思是:

SiteID|WebID|ListID|ListItemID

IIRC,其中一个关键对象具有CanonicalId属性(或者可能是内部属性),它可以帮助您构建这样的字符串.

所以在使用window.location.href方面,如果你和我们的情况模糊不一,我会避免这种情况.建议考虑类似于我们使用的方法,但要记住有一些位置(例如某些形式)甚至在服务器上SPContext.Current.ListItem为null,尽管SPContext.Current.Web(可能还有SPContext)填充了.Current.List).

总之 – ID是您的朋友,URL不是.

标签:javascript,publishing,sharepoint
来源: https://codeday.me/bug/20190626/1294434.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有