后面的代码控件

时间:2009-10-19 21:44:20

标签: asp.net

我正在开发一个vb.net项目,我在代码隐藏文件(* .vb)中找不到一些控件。我想知道是因为我正在使用page_load函数,因此在page_control事件之后才会加载控件。但是我能够通过formview目标的findcontrol功能找到它们。

5 个答案:

答案 0 :(得分:2)

模板内部的控件(例如在FormView或GridView中)不能直接在后面的代码中访问。您必须使用FindControl来访问这些控件。

答案 1 :(得分:1)

如果在aspx中声明了控件,那么它们将在Page类的等效类中定义。 这是与.Net v2.0一起引入的,因此弄乱设计人员不会搞砸你的代码隐藏文件(在某些情况下会导致很多问题)。

您可以从Page Load事件访问控件。有时IntelliSense会对您起作用,并不建议控制。只需输入它即可。您可以关闭aspx页面并再次打开它。有时修复它。或者只是重启Visual Studio,如果你对它感到厌烦。

但是,如果您有兴趣在页面生命周期的某些时间访问控制数据,则需要考虑一些因素。 服务器控件有自己的生命周期,类似于页面生命周期,但控件触发事件的顺序如下:

    控件的
  1. InitUnload事件发生 为容器引发事件(自下而上)。
  2. 控件的
  3. Load事件发生 为容器引发事件(自上而下)。
  4. 您可以找到Page life cycle events on MSDN的更详细说明。

答案 2 :(得分:1)

很难说出究竟是什么问题;如果你能在这里发布一些代码会有所帮助。

我有两个猜测/建议:

  1. 如果您遇到brentkeller正在描述的问题,通常对我来说完全解决的是删除aspx.designer.cs文件,然后右键单击.aspx文件并选择“转换为Web应用程序” 。这会重新创建设计器文件。

  2. 控件位于Jason Berkan建议的模板中。例如,如果它在LoginView中,您将在LoginView上使用.FindControl(“controlId”)。

答案 3 :(得分:0)

控件将是同一解决方案中部分类的一部分。只需查找您的班级名称的所有参考。

答案 4 :(得分:0)

我偶尔会在向页面添加控件和Intellisense无法识别控件时遇到问题。编译器似乎也无法识别控件并阻止编译项目。这可能非常令人沮丧,我真的还没弄清楚原因。

有时关闭aspx页面及其代码文件会有所帮助,有时会关闭Visual Studio并重新打开它。有时它都不起作用,我只是尝试另一种方式来完成任务。

我不知道这是不是你正在经历的,但如果是这样的话,它肯定会让你挠头,想知道发生了什么。