是否可以在“提供商托管应用程序”中使用 SharePoint 左侧导航栏。SharePoint 网站“PlaceHolderLeftNavBar”上显示的导航。有没有类似 ajax 调用或 REST/CSOM 功能的方法?
问问题
4173 次
2 回答
1
根据官方 MSDN 文档,CSOM 和 JSOM 都包含 Navigation 属性,这些属性还提供对快速启动菜单(又名“左侧导航栏”)的访问。
文档链接如下:
SP.Navigation.quickLaunch 属性 (sp.js) (JSOM)
Navigation.QuickLaunch 属性(CSOM)
为了在提供商托管的应用程序中使用 CSOM 或 JSOM,您需要使用 OAUTH(适用于 Office 365/SharePoint Online)或在高信任度/本地环境中使用证书进行身份验证。
如果您使用 Visual Studio 2013 提供的适用于 SharePoint 2013 的应用程序模板,并选择提供程序托管,则它应该附带一个 TokenHelper.cs/vb 类文件,该文件将为这两种方案完成大部分繁重工作。MSDN 上还提供了有关身份验证技术的更多信息 - 请特别查找以下主题:
- SharePoint 2013 中应用程序的授权和身份验证 如何:
- 为 SharePoint 2013 创建高信任应用程序(高级主题)
我不确定此时是否有可用的纯 REST 端点,这肯定可以简化提供商托管应用程序中 CSOM / JSOM 的高级授权要求。
于 2014-03-24T14:29:32.900 回答
1
SP.Web.navigation 属性获取一个值,该值指定站点上的导航结构,包括快速启动区域和顶部导航栏
如何通过 CSOM (JavaScript) 访问导航(快速启动)
function getQuickLaunch(success,error)
{
var context = new SP.ClientContext.get_current();
var web = context.get_web();
var nav = web.get_navigation();
var quickLaunch = nav.get_quickLaunch();
context.load(quickLaunch);
context.executeQueryAsync(
function() {
var nodes = [];
var nodesCount = quickLaunch.get_count();
for(var i = 0; i < nodesCount;i++){
var node = quickLaunch.getItemAtIndex(i);
nodes.push(node);
}
success(nodes);
},
error
);
}
用法
getQuickLaunch(
function(nodes){
for(var idx in nodes)
{
console.log(nodes[idx].get_title());
}
},
function(sender, args) {
console.log('Error:' + args.get_message());
}
);
如何通过 REST 访问导航(快速启动)
function getQuickLaunch(siteurl, success, failure) {
$.ajax({
url: siteurl + "/_api/web/navigation/quickLaunch",
method: "GET",
headers: { "Accept": "application/json; odata=verbose" },
success: function (data) {
success(data.d.results);
},
error: function (data) {
failure(data);
}
});
}
用法
getQuickLaunch(_spPageContextInfo.webAbsoluteUrl,
function(nodes){
for(var idx in nodes)
{
console.log(nodes[idx].Title);
}
},
function(error) {
console.log(JSON.stringify(error));
}
);
于 2014-04-12T08:06:50.693 回答