首页 > 代码库 > 如何在silverlight中以同步方式 获取sharepoint2013站点的当前登录账号
如何在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 =http://www.mamicode.com/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=http://www.mamicode.com/"" />
注意:id要在唯一。不能在母版页和布局页里有重复的,而且为客户端的控件
用控件.CS代码如下:
定义全局变量:
/// <summary>
/// currentlogin
/// </summary>
public string _currentLoginName = string.Empty;page_load事件:
2、 把用户控件部署到SP站点中protected void Page_Load(object sender, EventArgs e){if(!Page.IsPostBack)
{try
{//
SPUser user = SPContext.Current.Web.CurrentUser;//
if(user !=null){_currentLoginName =SSOCredentials.GetLoginName(user.LoginName);}}catch(Exception ex)
{}}}3、 把用户控件部署到母版页或布局页(通过SPD方式加入进去或VS里头部署母版的方式嵌入进去,这里不多说了)。这里我部署到母版页,如下图:
4、 部署完毕后,在silverlight代码端用如下一个函数就可以搞定。
string loginName = HtmlPage.Document.GetElementById("sl_slCurrentLoginName").GetAttribute("value");部署完毕silverlight包到SP站点中,即可获取当前登录账号。
如何在silverlight中以同步方式 获取sharepoint2013站点的当前登录账号
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。