1

我是一个 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;
     }
}
4

1 回答 1

1

您试图在后面的代码中访问的控件位于项目模板中。出于这个原因,您不能通过智能感知访问它们,因为它们实际上不在表单上 - 它们将在绑定父控件 (ListView1) 时添加。

Subscribe the the item databound event of the listview control. In there, you can access the child controls for each item in the listview. Something like this would get you the control:

e.Item.FindControl("TestLinkBox");
于 2012-09-02T09:17:15.790 回答