Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 在第页上找不到文本框_Asp.net - Fatal编程技术网

Asp.net 在第页上找不到文本框

Asp.net 在第页上找不到文本框,asp.net,Asp.net,我在页面上有一个文本框,但当我使用 TextBox formTextBox = Page.FindControl(textBox) as TextBox; 它返回null。有办法解决这个问题吗?我知道控件在页面上,但我找不到它 谢谢有两件事发生了。。。找不到该控件(这是最有可能的),或者该控件未返回文本框对象 关于FindControl要记住的是它不是递归的。。。它将只查看顶级子控件。因此,如果文本框嵌套在另一个控件中,将找不到它。你可以 您可能想制作自己版本的FindControl,在嵌套控

我在页面上有一个文本框,但当我使用

TextBox formTextBox = Page.FindControl(textBox) as TextBox;
它返回
null
。有办法解决这个问题吗?我知道控件在页面上,但我找不到它


谢谢

有两件事发生了。。。找不到该控件(这是最有可能的),或者该控件未返回
文本框
对象

关于
FindControl
要记住的是它不是递归的。。。它将只查看顶级子控件。因此,如果文本框嵌套在另一个控件中,将找不到它。你可以


您可能想制作自己版本的FindControl,在嵌套控件中进行搜索——实现这样一个方法很简单,使用google foo可以很容易地找到它。。。找不到该控件(这是最有可能的),或者该控件未返回
文本框
对象

关于
FindControl
要记住的是它不是递归的。。。它将只查看顶级子控件。因此,如果文本框嵌套在另一个控件中,将找不到它。你可以


您可能希望制作自己版本的FindControl,在嵌套控件中进行搜索——如果您使用的是
母版页,并且该控件位于
ContentPlaceholder
中的页面中,则实现这种方法非常简单,可以使用google foo轻松找到,您无法通过
FindControl
直接获取对控件的引用,因为页面的
ControlCollection
中唯一的控件是母版页本身。 这是有道理的。当控件位于具有母版页的页面的顶层时,您不能保证ID是唯一的,因为其他ContentPages也可能具有具有此ID的控件,并且
FindControl
今天可能返回另一个控件而不是明天

如果您查看要查找的控件的名称,您会发现在
母版页
的情况下,它是
内容占位符
,在“正常”页面的情况下,它是页面本身

因此,在通过FindControl找到控件之前,您需要首先获取对母版页的ContentPlaceholder的引用:

Page.Master.FindControl("ContentPlaceHolder1").FindControl("TextBox1");

但是为什么不直接引用控件呢?例如:

this.TextBox1.Text = "Hello World";

顺便说一下,这是从中派生出来的。

如果您使用的是
母版页
,并且此控件位于
内容占位符
中的页面中,则无法通过
FindControl
直接获取对该控件的引用,因为该页面的
控件集合
中唯一的控件是母版页本身。 这是有道理的。当控件位于具有母版页的页面的顶层时,您不能保证ID是唯一的,因为其他ContentPages也可能具有具有此ID的控件,并且
FindControl
今天可能返回另一个控件而不是明天

如果您查看要查找的控件的名称,您会发现在
母版页
的情况下,它是
内容占位符
,在“正常”页面的情况下,它是页面本身

因此,在通过FindControl找到控件之前,您需要首先获取对母版页的ContentPlaceholder的引用:

Page.Master.FindControl("ContentPlaceHolder1").FindControl("TextBox1");

但是为什么不直接引用控件呢?例如:

this.TextBox1.Text = "Hello World";

顺便说一下,这是从中派生出来的。

在标记中的文本框周围放置一个占位符,如下所示:

<asp:PlaceHolder ID="MyPlaceHolder" runat="server>
  <asp:TextBox ID="MyTextBox" runat="server" />
</asp:PlaceHolder>

在标记中的文本框周围放置一个占位符,如下所示:

<asp:PlaceHolder ID="MyPlaceHolder" runat="server>
  <asp:TextBox ID="MyTextBox" runat="server" />
</asp:PlaceHolder>

你知道控件在页面上,但是在哪里?你能写你的加价吗?除此之外,您是否正在使用母版页?如果这是真的,请看我对另一个问题的回答:它是否位于母版页的内容区域?是的,它位于母版页的内容区域。这是一个关于如何引用母版页内容的示例。您知道控件位于页上,但在何处?你能写你的加价吗?除此之外,您是否正在使用母版页?如果这是真的,看看我对另一个问题的回答:它在母版页的内容区吗?是的,它在母版页的内容区这里有一个关于如何引用母版页内容的问题。我确信递归查找器已经存在,他只需要查找它。嗨,它只出现在一个div中。@jcolebrand其他人都写过这样的,但它不存在于API中。你必须自己实施,或者借用别人的经验s@WesleySkeen然后您需要在该div内进行搜索。给它一个id并runat=server(因此@jcolebrand:div(或Panel)不在MingContainer中实现。我确信递归查找器已经存在,他只需要查找它。嗨,它只存在于一个div中。@jcolebrand其他人已经编写了这样的内容,但它在API中不存在。你必须自己实现它或借用其他人的s@WesleySkeen然后你需要在分区内搜索。给它一个id,然后runat=server(因此@jcolebrand:div(或Panel)没有在mingContainer中实现。我很好奇他为什么不直接引用它。我很好奇他为什么不直接引用它。