如何在silverlight中以同步方式 获取sharepoint2013站点的当前登录账号

最近有个项目用到了silverlight要同步方式获取当前登录账号。异步的方式无法跟其他应用结合。主要先后顺序问题。但是silverlight非常不好获取到当前登录账号。即使获取到了也是异步方式获取。后来想到用JS的客户端对象模型区获取也是异步方式可以获取。代码如下:

<script type="text/javascript">
SP.SOD.executeFunc('sp.js', 'SP.ClientContext', getWebUserData);
var context = null;
var web = null;
var currentUser = null;
function getWebUserData() {
context =SP.ClientContext.get_current();
web = context.get_web();
currentUser = web.get_currentUser();
currentUser.retrieve();
context.load(web);
context.executeQueryAsync(Function.createDelegate(this, this.onSuccessMethod), Function.createDelegate(this, this.onFailureMethod));
}
function onSuccessMethod(sender, args) {
var userObject = web.get_currentUser();
alert('User name:' + userObject.get_title() + '\n Login Name:' + userObject.get_loginName());
document.getElementById("sl_slCurrentLoginName").value =userObject.get_title();
alert(document.getElementById("sl_slCurrentLoginName").value);
}
function onFailureMethod(sender, args) {
alert('request failed ' + args.get_message() + '\n' + args.get_stackTrace());
}
</script>

 

也是无法控制与其他应用的先后顺序,网上有资料写了通过web services来无法获取,不成功。其实想明白了很简单,下面是解决方案:

1、 自己开发一个用户控件,在用户控件里用API函数获取当前登录账号并赋值给隐藏的控件,如下:

用户控件的.ascx的代码如下:

<input type="hidden" id="sl_slCurrentLoginName" value="<%=_currentLoginName%>" />

注意:id要在唯一。不能在母版页和布局页里有重复的,而且为客户端的控件

用控件.CS代码如下:

定义全局变量:

/// <summary>
 
 
/// currentlogin
 
 
/// </summary>
 
 
public string _currentLoginName = string.Empty;

page_load事件:

protected void Page_Load(object sender, EventArgs e)
 
 
{
 
 
 
try
 
 
{
 
 
//
 
 
SPUser user = SPContext.Current.Web.CurrentUser;
 
 
//
 
 
if(user !=null)
 
 
{
 
 
_currentLoginName =SSOCredentials.GetLoginName(user.LoginName);
 
 
}
 
 
}
 
 
catch(Exception ex)
 
 
{
 
 
}
 
 
}
 
 
 
 

2、 把用户控件部署到SP站点中

3、 把用户控件部署到母版页或布局页(通过SPD方式加入进去或VS里头部署母版的方式嵌入进去,这里不多说了)。这里我部署到母版页,如下图:

image

4、 部署完毕后,在silverlight代码端用如下一个函数就可以搞定。

string loginName = HtmlPage.Document.GetElementById("sl_slCurrentLoginName").GetAttribute("value");

部署完毕silverlight包到SP站点中,即可获取当前登录账号。

转载于:https://www.cnblogs.com/love007/p/4094696.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值