我遇到了一个问题,我正在动态地向placeHolder添加文本框。
placeHolder声明:
<asp:PlaceHolder ID="phTextBoxes" runat="server" >
</asp:PlaceHolder>
分配TextBoxes
...if (phTextBoxes!= null) phTextBoxes.Controls.Add(txt);
但是当我构建应用程序时,我收到了错误
当前上下文中不存在名称“phTextBoxes” 我已经使用 FindControl()解决了这个问题,如下所示。
PlaceHolder phtxt = (PlaceHolder)form1.FindControl("phTextBoxes");
然后将控件添加到phtxt。 错误消失了。 但我想知道为什么旧的placeHolder发出错误,FindControl是如何找到它的。
答案 0 :(得分:0)
正如之前提到的@GrahamClark,你可能会遗漏一些东西。没有办法不在代码中看到phTextBox,除非它在另一个控件中,如GridView等。确保你的占位符不在任何其他控件内。
另一件事,在Designer窗口(aspx或ascx文件)的顶部,确保您在 CodeBehind / * CodeFile *中引用了相关的类名,如有必要,继承。
示例1:我有一个名为 UC1 的用户控件,在ascx文件中我应该声明类名,如下所示:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Cart.ascx.cs"
Inherits="UserControls_UC1" %>
示例2:我有一个名为默认的ASPX页面,在aspx文件中我应该声明类名,如下所示:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs"
Inherits="_Default" %>