首页 > 解决方案 > 如何通过存储服务器端的 asp:Listview 在 aspx 页面之间传递 Eval 值?

问题描述

我有一个包含多行的列表视图,每一行对应一个 SQL 数据库行,在页面加载时填充。

列表视图由多个表组成,每个表都包含来自我的数据库的列数据和一个将用户重定向到另一个网页的超链接按钮。

当用户单击超链接时,我想在不使用 GET 或 POST 请求的情况下将 Eval 值传递给另一个网页(服务器端),出于安全原因,该信息不能从 URL 中看到。

我知道会话对象,但是,我不确定单击超链接时如何分配 eval 值。

我正在尝试在网页之间使用 Text='<%#Eval ("ID") %>' (ID) 。

<table>    
<td>
    <asp:HyperLink ID="HyperLink1" runat="server" 
    ImageUrl="TrackingPage.aspx">

     <asp:ImageButton ID="ImageButton1" runat="server" CssClass="ImageBtn" 
     ImageUrl="Images/TrackingImg.PNG" OnClientClick="NavigateUrl" />
                                            </asp:HyperLink>

 </td>
      </tr>
      <tr>
 <td>
      <asp:Label ID="DashboardID"  runat="server" CssClass="IDTextStyle" 
      Text='<%#Eval ("ID") %>'></asp:Label>
 </td>
</table>

任何建议或进一步阅读将不胜感激。

谢谢你的帮助。

标签: htmlasp.netlistviewsessioneval

解决方案


我建议您将图像按钮编辑为<asp:ImageButton ID="ImageButton1" runat="server" CssClass="ImageBtn" ImageUrl="Images/TrackingImg.PNG" OnClick="ImageButton1_Click" CommandArgument='<%#Eval ("ID") %>'/>. 然后,您可以像这样保存 id Session

protected void ImmageButton1_Click(object sender, EventArgs e)
{
    var dashboardID = ((ImageButton)sender).CommandArgument;
    Session["DashboardID"] = dashboardID;
    // Logic to redirect to another page
}

推荐阅读