如何在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里头部署母版的方式嵌入进去,这里不多说了)。这里我部署到母版页,如下图:

4、 部署完毕后,在silverlight代码端用如下一个函数就可以搞定。
string loginName = HtmlPage.Document.GetElementById("sl_slCurrentLoginName").GetAttribute("value");
部署完毕silverlight包到SP站点中,即可获取当前登录账号。
如何在silverlight中以同步方式 获取sharepoint2013站点的当前登录账号的更多相关文章
- Windows Phone 同步方式获取网络类型
原文:Windows Phone 同步方式获取网络类型 在Windows Phone 开发中有时候需要获取设备当前连接网络的类型,是Wifi,还是2G,3G,或者4G,SDK中提供获取网络类型的API ...
- 一步一步学Silverlight 2系列(20):如何在Silverlight中与HTML DOM交互(下)
述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...
- 一步一步学Silverlight 2系列(19):如何在Silverlight中与HTML DOM交互(上)
概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...
- 如何在tornado中以异步的方式调用同步函数
问题 如何在tornado的coroutine中调用同步阻塞的函数 解决方案 使用python内置标准库的concurrent.futures.ThreadPoolExecutor和tornado.c ...
- 一步一步学Silverlight 2系列(21):如何在Silverlight中调用JavaScript
概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...
- Java MVC Controller 中通过不同方式获取 @PathVariable 参数值
1.最常用,也是最直接使用方法,通过@PathVariable注解获取 @RequestMapping(value = "/test/{a}") public @ResponseB ...
- 如何在xcode中启用xib方式做应用
使用storybord的好处和缺点这里不一一说,但是很多人可能习惯xib的方式进行应用的开发. 在xcode环境下可参考如下链接进行设定. http://codefromabove.com/2014/ ...
- pandas | 如何在DataFrame中通过索引高效获取数据?
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是pandas数据处理专题的第四篇文章,我们一起来聊聊DataFrame中的索引. 上一篇文章当中我们介绍了DataFrame数据结构当 ...
- 如何在AWS中为自己的S3托管站点添加SSL/TSL证书(https)
概要 利用AWS的S3服务托管静态网站后,如何将自己的域名与该站点绑定,并为此域名提供SSL/TSL证书(https). 面向人群 已经掌握如何利用S3服务托管静态网站. 已经拥有自己的域名. 希望为 ...
随机推荐
- Office英语学习好帮手
Office提供了强大实用的英语学习助手,它可以自动翻译中英文,还可以显示详尽的解释帮助信息,当然标准的发音也是必不可少的.如何启动屏幕取词翻译功能呢?如何让office自动取词并翻译呢?如何收听单词 ...
- [转载]TFS与Project、Excel同步
我们还可以使用Microsoft Excel和Microsoft Project来连接到TFS,方法如下: 通过Microsoft Excel连接到TFS,在安装了Team Explorer后,Mic ...
- 8个前沿的 HTML5 & CSS3 效果【附源码下载】
作为一个前沿的 Web 开发者,对于 HTML5 和 CSS3 技术或多或少都有掌握.前几年这些新技术刚萌芽的时候,开发者们已经使用它们来小试牛刀了,如今这些先进技术已经遍地开发,特别是在移动端大显身 ...
- [logstash-input-http] 插件使用详解
插件介绍 Http插件是2.0版本才出现的新插件,1.x是没有这个插件的.这个插件可以帮助logstash接收其他主机或者本机发送的http报文. 插件的原理很简单,它自己启动了一个ruby的服务器, ...
- C# 通过反射来动态创建泛型类型
C# 通过反射来动态创建泛型类型与创建普通类型的区别在于:泛型参数的处理 创建泛型类型存在三种情况: 第一种:知道泛型类型,但需要动态指定泛型参数: 第二种:知道泛型参数,但需要动态创建指定参数的泛型 ...
- 检测WCF服务是否在线第二版
上一版在这里http://www.cnblogs.com/kklldog/p/4878296.html 上一版主要是解决了监控服务不需要手动添加服务引用的问题,但是还是需要在配置文件中添加对应的end ...
- 正则表达式匹配a标签的href
JS代码: <html> <head> <script language="javascript"> var a='<P><A ...
- jQuery使用FormData上传文件
这段时间,一直练习在ASP.NET MVC程序中上传文件.静态,动态,单个或多文件上传. 在网上有看到网友提及使用FormData来上传,Insus.NET觉得是一个很不错的方式. 控制器中,创建两个 ...
- 基于MVC4+EasyUI的Web开发框架经验总结(2)- 使用EasyUI的树控件构建Web界面
最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开发框架保持一致,而在Web上,我主要采用EasyUI的前端界面处理技术,走MVC的技术路线,在重 ...
- ajax携带状态值