我是一个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;
}
}
答案 0 :(得分:1)
您尝试在后面的代码中访问的控件位于项目模板中。因此,您无法通过intellisense访问它们,因为它们实际上不在表单上 - 它们将在绑定父控件(ListView1)时添加。
订阅listview控件的item databound event。在那里,您可以访问列表视图中每个项目的子控件。这样的事情会让你掌控:
e.Item.FindControl("TestLinkBox");