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

时间:2014-10-16 21:07:55

标签: c# asp.net session c#-4.0 cookies

这可能是一个简单的问题,但是,我想,我有一个变量,我已经在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变量)传递到此代码中?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

我想通了......我必须在实际页面中将值设置为会话参数,而不是在服务器端代码中,如下所示:

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

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