【问题标题】:Passing session or cookie variables to server tags in ASP.NET将会话或 cookie 变量传递给 ASP.NET 中的服务器标记
【发布时间】:2014-10-20 01:00:34
【问题描述】:

这可能是一个简单的问题,但它让我难以理解,我有一个变量,我已在 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 变量)传递到这段代码中?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 我需要它来做数据网格。
    • 什么意思?您也可以在服务器端代码中设置 DataGrid 属性,包括绑定项。你能把你的完整代码和标记贴出来让我看看吗?
    • 我能够使用我编写的方法修复它。我知道你也可以按照你发送的方式完成它。这正是我最初做的方式。我正在成倍地学习:)
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-12
      • 2021-08-05
      相关资源
      最近更新 更多