1

所以我真的不确定我在这里做错了什么,但我的代码显然不起作用。我有我的列表视图做我需要的一切,除了当我使用该ListView.FindControl()方法,然后在该控件上设置一个属性时,它给了我一个Object reference not set to an instance of an object.错误。这是我的代码:

ASPX

<p class="rates-title"><span>
            <asp:Literal ID="currentDate" runat="server"></asp:Literal></span><br>
            Todays Rates</p>
        <span class="rates-arrow sprite"></span>
        <asp:ListView ID="RatesList" ItemPlaceholderID="RSSPlaceholder" runat="server">
            <LayoutTemplate>
                <ul>
                    <asp:PlaceHolder ID="RSSPlaceholder" runat="server"></asp:PlaceHolder>
                    <li>
                        <asp:HyperLink ID="AllRatesLink" CssClass="all-rates" runat="server">
                        View All Rates<span></span>
                        </asp:HyperLink>
                    </li>
                </ul>
            </LayoutTemplate>
            <ItemTemplate>
                <li>
                    <div class="rate-text">
                        <p><%# Eval("Name") %></p>
                        <div class="rate">
                            <p><%# Eval("InitialRate") %>%</p>
                        </div>
                    </div>
                    <%# Eval("Apr") %>
                    <a href="#rates-box-<%# Eval("Id") %>" class="todays-rates-click-side sprite"></a>
                    <div class="todays-rates-rollover">
                        <p><%# Eval("ContentTruncated") %></p>
                    </div>
                </li>
            </ItemTemplate>
        </asp:ListView>

代码背后

        currentDate.Text = DateTime.Now.ToString("MM.dd.yy");
        HyperLink allRatesLink = (HyperLink)RatesList.FindControl("AllRatesLink");
        allRatesLink.Text = "hello";

所以奇怪的是currentDate工作得很好,我使用的数据(在我的代码隐藏中的其他地方)在迭代列表时工作得很好,但是一旦我在allRatesLink控件上设置任何属性,它就会给出对象引用未设置错误. 对此有任何想法/帮助吗?

4

1 回答 1

3

allRatesLink 为空,因为当您尝试将属性设置为空时,未找到它会导致对象引用错误。

您需要在创建 LayoutTemplate 之后调用 FindControl,例如在 OnLayoutCreated 处理程序中或在 DataBind() 之后

于 2013-07-16T03:52:28.633 回答