将会话或cookie变量传递到ASP.NET中的服务器标记

本文关键字:NET 服务器 ASP 会话 cookie 变量 | 更新日期: 2023-09-27 18:26:53

这可能是一个简单的问题,但我无法回答,我在ASP.NET应用程序的另一个页面中设置了一个变量作为代码隐藏会话。假设它是:Session["UserName"],我想将它从代码隐藏页传递给服务器标记。服务器标签如下:

<asp:SqlDataSource ID="SqlDataSourceDelta" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionStringAlpha %>" SelectCommand="SELECT [ThingTitle], [ThingSynopsis], [ThingCategory], [ThingType], [ThingUserName] FROM [ThingOfSubmissions] WHERE ThingUsername = <%$ Session["UserName"] %>"

如上所示,我不能直接在服务器标签中使用:<%$ Session["UserName"] %>,而不会产生关于格式错误的服务器标签的错误。所以我的问题是,如何将这个会话变量或任何其他应用程序变量(非SQL Server变量)传递到这段代码中?

将会话或cookie变量传递到ASP.NET中的服务器标记

您可以在服务器端代码中设置属性吗?

SqlDataSourceDelta.SelectCommand = string.Format("SELECT [ThingTitle], 
[ThingSynopsis], [ThingCategory], 
[ThingType], [ThingUserName] 
FROM [ThingOfSubmissions] 
WHERE ThingUsername = '{0}'", Session["UserName"]);

我想明白了。。。我不得不在实际页面中将该值设置为会话参数,而不是在服务器端代码中,如下所示:

  <asp:SessionParameter
            Name="UserName"
            SessionField="UserName"
            Type="String" />

接下来,我在页面服务器标记代码中使用了@UserName,它运行得很好。