Asp.net ASP:对象引用未设置为对象的实例

Asp.net ASP:对象引用未设置为对象的实例,asp.net,vb.net,Asp.net,Vb.net,我试图从数据源向标签传递一个值,但它总是给我这个错误 表格1.aspx: <asp:FormView ID="ProductsView" DataSourceID="ProductDataSource" DataKeyNames="Parking_ID" runat="server" > <ItemTemplate> <div style="width: 200

我试图从数据源向标签传递一个值,但它总是给我这个错误

表格1.aspx:

 <asp:FormView ID="ProductsView" DataSourceID="ProductDataSource" DataKeyNames="Parking_ID"
                runat="server" >
                <ItemTemplate>
                    <div style="width: 200px; height: 200px; border: solid 10px white; background-position: center;
                        background-repeat: no-repeat; background-image: url('<%# Eval("Parking_ID", "images/{0}.bmp") %>');">
                    </div>
                    <asp:HiddenField Value='<%# Eval("Parking_Cost") %>' ID="hiddenPrice" runat="server" />
                    <asp:HiddenField Value='<%# Eval("Parking_Name") %>' ID="hiddenName" runat="server" />
                    <asp:HiddenField Value='<%# Eval("Parking_ID") %>' ID="HiddenField1" runat="server" />
                </ItemTemplate>
            </asp:FormView>
             <asp:Label ID="lblName" runat="server" Text="TEST" CssClass="title" Style="font-size: 17px;
                display: block;"></asp:Label>
            <asp:Label ID="lblPrice" runat="server" Text="TEST" CssClass="title" Style="color: Red;
                font-size: 12px;"></asp:Label>
                <asp:Label ID="lbl_ID" runat="server" Text="" CssClass="title" Style="color: Red;
                font-size: 12px;"></asp:Label>
                <asp:SqlDataSource ID="ProductDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:mydatabaseConnectionString2 %>"
    ProviderName="System.Data.SqlClient" SelectCommand="SELECT * FROM [Parking] WHERE ([Parking_ID] = @Parking_ID)">
    <SelectParameters>
        <asp:Parameter Name="Parking_ID" Type="Int32" />
    </SelectParameters>
</asp:SqlDataSource>
我正在使用vb.net脚本

有什么想法吗


问候

我猜错误源是以下语句:

Me.ProductsView.FindControl("hiddenName")
原因是在
产品视图
控件中,您没有直接使用
ID
“hiddenName”
控件


您可能需要使用递归函数来获取控件。

控件通常位于

试一试


但一般来说,当您使用
Control.FindControl()
时,如果找不到它,它可能会返回
Nothing
。因此,最好的做法是执行
TryCast
而不是
DirectCast
,然后检查它是否为
Nothing

此代码是否在绑定事件中

lblName.Text = DirectCast(Me.ProductsView.FindControl("hiddenName"), HiddenField).Value
如果是这样,您可能需要检查它正在运行的模板:

if (e.Item.ItemType == ItemType || e.Item.ItemType == AlternateItemType)
(我不确定
FormView
的类型,但在
GridView
中,它是这样的

控件
hiddenName
不存在于其他模板上

您还必须从
e.Item
中找到控件,该控件是当前模板。

可能与
lblName.Text = DirectCast(Me.ProductsView.FindControl("hiddenName"), HiddenField).Value
if (e.Item.ItemType == ItemType || e.Item.ItemType == AlternateItemType)