Intellisense没有出现在代码背后的某些控件中

时间:2012-09-02 09:11:55

标签: asp.net code-behind object-reference

我是一个asp.net初学者,我只是想动态设置可见属性,但我无法在后面的代码中访问“TestLinkBox”和“TestLink”id。我试图重建解决方案,删除designer.cs文件并让它重新创建并尝试我在stackOverflow上找到的一些解决方案,你可以在后面的代码中看到,但我总是得到“对象引用未设置为实例一个东西。”错误。我做错了什么?

ASP.NET代码的一部分

<%@ Page Title="" Language="C#" MasterPageFile="~/Public/Main.Master"
AutoEventWireup="true" CodeBehind="SpecifikacijaDetails.aspx.cs" Inherits="web.Public.SpecifikacijaDetails"
%>
    <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"></asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
        <mc:VijestiTraka ID="vijestitraka" runat="server"></mc:VijestiTraka>
        <div class="middle_content_box">
            <asp:ListView ID="ListView1" runat="server" DataKeyNames="SpecifikacijaID"
            DataSourceID="SqlDataSource1">
                <AlternatingItemTemplate>
                    <div class="details_title_box">
                        <p class="title"><strong><%# Eval("Brand") %></strong> 
                            <%# Eval( "Model") %>
                        </p>
                    </div>
                    <div class="left_column">
                        <div class="pregled_modela_slika margb30">
                            <img src='<%# Eval("SlikaMobitela") %>' />
                        </div>
                        <div id="TestLinkBox" class="testLink" runat="server" visible="false">
                            <asp:HyperLink runat="server" ID="TestLink" NavigateUrl='<%#"~/Public/TestSpecifikacije.aspx?SpecifikacijaID=" + Eval("SpecifikacijaID")%>'
                            Text="Pogledajte kompletan test"></asp:HyperLink>
                        </div>

代码背后

using (MobBL temp = new MobBL())
{
    if (temp.ProvjeriImalTest(Int32.Parse(Request.QueryString["SpecifikacijaID"])) > 0)
    {

        //ListView1.FindControl("link_za_test").Visible = true;

        //HtmlControl htmlDivControl = (HtmlControl)Page.FindControl("link_za_tet");
        //htmlDivControl.Visible = true;
     }
}

1 个答案:

答案 0 :(得分:1)

您尝试在后面的代码中访问的控件位于项目模板中。因此,您无法通过intellisense访问它们,因为它们实际上不在表单上 - 它们将在绑定父控件(ListView1)时添加。

订阅listview控件的item databound event。在那里,您可以访问列表视图中每个项目的子控件。这样的事情会让你掌控:

e.Item.FindControl("TestLinkBox");
相关问题