在页面代码后面的Page_Load上引用时,ASP.NET User Control实例为null

Sco*_*bes 6 asp.net user-controls pageload

我有一个用户控件,我已经编写并添加到ASP.NET页面,并且运行正常.但是,我试图在Page_Load上的代码后面引用该自定义控件中的属性,但不能,因为该实例的可访问变量为null.

用户控件和Page_Load这是正常的吗?如果是这样,我如何引用控件的实例以访问其公共属性?这是我在呈现页面之前需要做的事情,以便初始化一些变量.

Mar*_*eld 15

我有同样的问题,结果我错误地注册了我的自定义控件.

正确的定义:

<%@ Register Src="PeriodControl.ascx" TagName="PeriodControl" TagPrefix="ucs" %>
Run Code Online (Sandbox Code Playgroud)

定义不正确:

<%@ Register TagPrefix="ucs" Namespace="MyWebsite" Assembly="MyWebsite" %>
Run Code Online (Sandbox Code Playgroud)

唯一的区别是直接引用ascx文件而不是程序集中的控件.去搞清楚!?

  • 当你使用它的提示在键入时找到用户控件时,ReSharper似乎默认注册用户控件上面提到的"错误方式".... (4认同)
  • 如果用户控件实际上在程序集中(ascx在DLL中而不在站点中),您会怎么做?我通常使用Web部署项目将所有常用的用户控件编译为DLL.VS2012不支持该项目类型,但您可以将站点编译为程序集,VS将读取它..但我无法弄清楚如何正确注册,因此用户控件上的控件不为空. (2认同)

Chr*_*heD 0

您也许可以从事件访问您的用户控件Page_PreRender。

您可以在此处找到有关asp.net 中页面生命周期的更多文档。