Sharepoint ASPX页面中Javascript中的查询字符串

Sharepoint ASPX页面中Javascript中的查询字符串,javascript,asp.net,sharepoint,Javascript,Asp.net,Sharepoint,我正在尝试将用户重定向到一个新页面,在该页面中,文本框中将显示用户名。我正在使用ASP.NET登录名和按钮来执行此操作。我的问题是,我不能100%确定如何将登录名中的值输入到需要这个值的javascript中。我没有办法进入服务器代码,所以这一切都必须由SharePoint designer完成 我知道通常的做法是这样做 window.location="http://mysite/default.aspx?u="+ LoginName1 但这似乎不起作用。有答案吗 JavaScript代码

我正在尝试将用户重定向到一个新页面,在该页面中,文本框中将显示用户名。我正在使用ASP.NET登录名和按钮来执行此操作。我的问题是,我不能100%确定如何将登录名中的值输入到需要这个值的javascript中。我没有办法进入服务器代码,所以这一切都必须由SharePoint designer完成 我知道通常的做法是这样做

window.location="http://mysite/default.aspx?u="+ LoginName1
但这似乎不起作用。有答案吗

JavaScript代码

function Redirect()
{   
    window.location="http://mysite/default.aspx";
}
ASP.NET代码

<asp:Button runat="server" Text="To Sysomos" id="Button1" OnClientClick="if (!Redirect()) { return false;};"></asp:Button>
       <asp:LoginName runat="server" id="LoginName1" ></asp:LoginName>

试试这样的方法

<script>
var usrName = "@HttpContext.Current.User.Identity.Name";
</script>

var usrName=“@HttpContext.Current.User.Identity.Name”;
窗口位置=”http://mysite/default.aspx?u=“+usrName+”

参考资料:

假设您使用的是SP2010,您可以使用Sharepoint的客户端对象模型来获取当前用户的详细信息

<script type="text/javascript">   
(function () {   
   var spUser;

   // Ensure SP objects have been loaded before executing our code    
   ExecuteOrDelayUntilScriptLoaded(getSpUser,"sp.js");    

   function getSpUser() {
       var clientContext = new SP.ClientContext.get_current();
       var spWeb = clientContext.get_web();
       spUser = spWeb.get_currentUser();
       clientContext.load(spUser);
       clientContext.executeQueryAsync(getSpUserSuccess, getSpUserException);
   }

   function getSpUserSuccess(sender, args) {
       var curUserId = spUser.get_loginName();
       // redirectToSomeAspxPage();
   }

   function getSpUserException(sender, args) {
       // Do any necessary error handling.
   } 
})();
</script>

(函数(){
var-spUser;
//确保在执行代码之前已加载SP对象
ExecuteOrderLayUntilScriptLoaded(getSpUser,“sp.js”);
函数getSpUser(){
var clientContext=new SP.clientContext.get_current();
var spWeb=clientContext.get_web();
spUser=spWeb.get_currentUser();
clientContext.load(spUser);
executeQueryAsync(getSpUserSuccess,getSpUserException);
}
函数getSpUserSuccess(发送方,参数){
var curUserId=spUser.get_loginName();
//重定向到someAspExpage();
}
函数getSpUserException(发送方,参数){
//执行任何必要的错误处理。
} 
})();

唯一的问题是重定向的时间可能会稍长,因为代码需要等待sp.js加载,然后才能获取当前用户的详细信息。或者,您可以在查询字符串上不使用用户名的情况下重定向,只需使用上述代码从您的ASPX页面检索用户名。

您可以找到当前用户的用户名和其他内容。为此,首先在.aspx页面顶部添加这一行:

Version=14.0.0.0
适用于Sharepoint 2010,
Version=12.0.0.0
适用于Sharepoint 2007)

现在,在
标记后面添加以下行:

<form>
  <SPSWC:ProfilePropertyLoader runat="server"/>

这似乎不起作用,因为它所做的只是拾取“@HttpContext.Current.User.Identity.Name”
<div id="userDetails" style="display:none">
  <asp:LoginName runat="server" id="userLogin">
  <SPSWC:ProfilePropertyValue PropertyName="FirstName" ApplyFormatting="false" id="userFirstName" runat="server"/>
  <SPSWC:ProfilePropertyValue PropertyName="LastName" ApplyFormatting="false" id="userLastName" runat="server"/>
  <SPSWC:ProfilePropertyValue PropertyName="WorkEmail" ApplyFormatting="false" id="userWorkEmail" runat="server"/>
  <SPSWC:ProfilePropertyValue PropertyName="PreferredName" ApplyFormatting="false" id="userPreferredName" runat="server"/>
</div>
document.getElementById('ctl00_userLogin').innerHTML