sharepoint - 将 {Sharepoint.LoginName} 添加到 sharepoint 2010 中 URL 中的查询字符串
问题描述
这真的很简单。我想在 sharepoint 2010 aspx 页面上创建一个链接 [ https://SomeOtherServer.com/subsite/appPage.aspx?Username=SharepointUserName] 。
我已经尝试过使用 javascript,并且不得不加载 5 个 JS 文件,但它仍然在 new SP.ClientContext(siteUrl)
我的另一个选择是编写一个名为 UrlAppender 的 Web 部件并在服务器端进行。
但这一切对我来说似乎很荒谬。必须有一个简单的方法来做到这一点。
解决方案
我猜你指的是当前用户,对吧?
即使创建服务器端组件(控件、Web 部件、其他东西)的选项没有任何问题,我也会推荐客户端方法。
在大多数情况下,不需要显式加载 SharePoint JS 库,SP.SOD.executeFunc
函数应该可以解决问题:
确保加载包含指定函数的指定文件,然后运行指定的回调函数。
在您的情况下sp.js
,库需要加载:
SP.SOD.executeFunc("sp.js", "SP.ClientContext", () => {
//sp.js has been loaded..
});
例子
SP.SOD.executeFunc("sp.js", "SP.ClientContext", () => {
var ctx = SP.ClientContext.get_current();
var currentUser = ctx.get_web().get_currentUser();
ctx.load(currentUser);
ctx.executeQueryAsync(
function(){
var link = `https://SomeOtherServer.com/subsite/appPage.aspx?Username=${currentUser.get_loginName()}`;
console.log(link);
},
function(sender,args){
console.log(args.get_message());
});
});
另一个选项来考虑对 SharePoint 库没有任何依赖关系的情况。
以下示例演示如何通过用户 ID_spPageContextInfo
属性检索用户详细信息(在 SharePoint 2010 中,每个页面都会生成一个所谓的上下文信息对象并_spPageContextInfo.userId
返回当前用户 ID)
var url = `${_spPageContextInfo.webAbsoluteUrl}/_vti_bin/ListData.svc/UserInformationList(${_spPageContextInfo.userId})`;
fetch(url, {
method: 'GET',
headers: {
'Accept': 'application/json;odata=verbose',
},
credentials: 'same-origin'
})
.then((response) => response.json())
.then( data =>{
var link = `https://SomeOtherServer.com/subsite/appPage.aspx?Username=${data.d.UserName}`;
console.log(link);
})
.catch(err =>{
console.log(err);
});
推荐阅读
- django - 使用 DjangoFilterConnectionField 时有什么方法可以删除边和节点?
- python-3.x - 是否有可以在 Windows Python 中处理 LIDAR 数据的库?
- debugging - 使用调试标志编译 gcc
- python - 如何通过在 Python 中使用 Unittest 断言整数在范围内?
- jakarta-ee - 针对 Liberty Arquillian Remote 运行测试时身份验证失败
- regex - 正则表达式:标签之间多次匹配
- python - 如何使用熊猫填充与原始数据的子字符串一致的新列单元格的一些数据?
- regex - 正则表达式 Excel 删除字符串的中间部分
- android - 我应该在 Android FCM 的防火墙中将哪个域或 IP 列入白名单?
- c# - 实体框架:在包含许多记录的表中插入记录时提高性能