在你的redirectToHome
功能
window.location = '<%= ResolveUrl("~/default.aspx") + "?SessionGUID="+ sessionID %>'
整个字符串在 内<% ... %>
,因此在传递到服务器之前由 .NET 呈现。因此sessionID
将假定有一个 .NET 变量,并且您传递给 javascript 函数的任何内容都不会被使用。(尝试“查看源代码”,看看你的代码真正呈现的样子)
您需要移出sessionID
.NET 块:
window.location = '<%= ResolveUrl("~/default.aspx") %>' + '?SessionGUID=' + sessionID;
或者在创建函数时立即从 .NET 块生成会话 ID:
window.location = '<%= ResolveUrl("~/default.aspx") + "?SessionGUID="+ System.Guid.NewGuid().ToString() %>'
如果您决定通过 javascript 变量传递会话 ID,则必须注意一些其他问题:
您的代码当前将打印类似的内容(假设您已修复字符串连接问题):
onclick="javascript:function(redirectToHome(e4bd5302-a77c-40f4-9439-6b510bb4cdf3))"
这有一系列问题:
- 您无需指定
javascript:
in,onClick
因为它已经是特定于 javascript 的属性。
- 您不应该将该代码包装在
function( ... )
- 您没有引用字符串 ID
正确的调用看起来像这样:
btnClose.attributes.add("OnClick","redirectToHome('" + sessionId + "');");
请注意,这同样可以写成:
btnClose.OnClientClick = string.Format("redirectToHome('{0}');", sessionId);
这可能更具可读性。