ASP.NET从ItemCommand的列表视图中获取隐藏值

时间:2010-02-01 18:17:10

标签: asp.net asp.net-3.5

我在列表视图中有LinkBut​​ton和HiddenField。我想从HiddenField中获取隐藏值,因此我可以将它存储在Session中,当单击LinkBut​​ton时,它会将隐藏值(存储在Session中)传输到另一个页面。但是我收到此错误消息“对象引用未设置为对象的实例”。这是功能:

    Protected Sub lvTimeSheet_ItemCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ListViewCommandEventArgs) Handles lvTimeSheet.ItemCommand

    Dim id As HiddenField = TryCast(e.Item.FindControl("hfTimeSheetId"), HiddenField)
    Dim myId As String = id.Value.ToString
    Session("myId") = myId
    Server.Transfer("Destination.aspx")

End Sub

加价

</asp:LinkButton><asp:HiddenField ID="hfTimeSheetId1" runat="server" Value='<%# Eval("hfTimeSheetId") %>' />

每次单击LinkBut​​ton时,都会导致上述错误消息出错。感谢您的任何意见。

2 个答案:

答案 0 :(得分:1)

我的猜测是FindControl未找到行内的hfTimeSheetId控件。您是否将其指定为托管控件(即runat =“server”)?

此外,如果您提供ASPX代码以查看如何定义控件,则可能会有所帮助。

答案 1 :(得分:0)

FindControl返回null,只有异常。尝试将其更改为:

Dim id As HiddenField = TryCast(e.Item.FindControl("hfTimeSheetId1"), HiddenField)