最近有个项目用到了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站点的当前登录账号的更多相关文章

  1. Windows Phone 同步方式获取网络类型

    原文:Windows Phone 同步方式获取网络类型 在Windows Phone 开发中有时候需要获取设备当前连接网络的类型,是Wifi,还是2G,3G,或者4G,SDK中提供获取网络类型的API ...

  2. 一步一步学Silverlight 2系列(20):如何在Silverlight中与HTML DOM交互(下)

    述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...

  3. 一步一步学Silverlight 2系列(19):如何在Silverlight中与HTML DOM交互(上)

    概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...

  4. 如何在tornado中以异步的方式调用同步函数

    问题 如何在tornado的coroutine中调用同步阻塞的函数 解决方案 使用python内置标准库的concurrent.futures.ThreadPoolExecutor和tornado.c ...

  5. 一步一步学Silverlight 2系列(21):如何在Silverlight中调用JavaScript

    概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...

  6. Java MVC Controller 中通过不同方式获取 @PathVariable 参数值

    1.最常用,也是最直接使用方法,通过@PathVariable注解获取 @RequestMapping(value = "/test/{a}") public @ResponseB ...

  7. 如何在xcode中启用xib方式做应用

    使用storybord的好处和缺点这里不一一说,但是很多人可能习惯xib的方式进行应用的开发. 在xcode环境下可参考如下链接进行设定. http://codefromabove.com/2014/ ...

  8. pandas | 如何在DataFrame中通过索引高效获取数据?

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是pandas数据处理专题的第四篇文章,我们一起来聊聊DataFrame中的索引. 上一篇文章当中我们介绍了DataFrame数据结构当 ...

  9. 如何在AWS中为自己的S3托管站点添加SSL/TSL证书(https)

    概要 利用AWS的S3服务托管静态网站后,如何将自己的域名与该站点绑定,并为此域名提供SSL/TSL证书(https). 面向人群 已经掌握如何利用S3服务托管静态网站. 已经拥有自己的域名. 希望为 ...

随机推荐

  1. PHP的学习--使用PhpDocumentor 2生成API文档

    官网地址:http://www.phpdoc.org/ 项目地址:https://github.com/phpDocumentor/phpDocumentor2 phpDocumentor 2是一个可 ...

  2. 百度地图JavaScript API自定义覆盖物、自定义信息窗口增删时的显示问题

    项目中,需求:在百度地图上实时画出车辆,并能点击车辆弹出信息框查看实时信息. 实现:通过不停的画覆盖物并删除掉.点击覆盖物时弹出信息窗口. 问题:删除掉覆盖物后信息窗也删除掉了.因为信息窗是建立在覆盖 ...

  3. 解决erlang节点启动失败报["inet_tcp",econnrefused]的问题

    今天有同事说他机器上的leofs启动不了.我用console起了一下,发现报如下错: {error_logger,{{2015,11,3},{6,23,6}},"Protocol: ~tp: ...

  4. Windows Azure HandBook (3) 浅谈Azure安全性

    <Windows Azure Platform 系列文章目录> 2015年3月5日-6日,参加了上海的Azure University活动.作为桌长与微软合作伙伴交流了Azure相关的技术 ...

  5. [C/C++]函数指针和函数分发表

    // console.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using nam ...

  6. 【数据压缩】Huffman编码

    1. 压缩编码概述 数据压缩在日常生活极为常见,平常所用到jpg.mp3均采用数据压缩(采用Huffman编码)以减少占用空间.编码\(C\)是指从字符空间\(A\)到码字表\(X\)的映射.数据压缩 ...

  7. SQ--模糊查询

    Between..And --between...and...在数据库内部是做作特殊优化的,执行效率比> and<等这种方式快:--between a and b 相当于:字段>=a ...

  8. Vue2.0流式渲染中文乱码问题

    在参照vue2.0中文官方文档学习服务端渲染之流式渲染时,因为响应头默认编码类型为GBK,而文件为UFT-8类型,所以出现了中文乱码问题. 解决办法:设置响应头编码类型即可 response.setH ...

  9. DirectShowLib directshownet 视频

    using DirectShowLib; using System; using System.Collections; using System.Windows.Forms; namespace C ...

  10. IBM和传统IT的沦落

    传统IT厂商沦落已经成为一种趋势.不仅仅是在中国去IOE的大背景下,在全球范围内,这些曾经盛极一时的IT大鳄也在衰落.作为一个在IBM服务了将近14年的老员工,我想浅谈一下IBM以及整个传统IT行业的 ...