调用 EnsureChildControls() 后所有控件仍然为空?

发布于 2024-09-11 15:26:11 字数 521 浏览 3 评论 0原文

根据此页面的布局方式,所有数据均在 Page_Init 处加载。好吧,我有一个自定义控件,但遇到了问题。

我将它放在页面上,如下所示:

<cc:SomeControl... />

然后我使用

MyControl.Value="blah";

简单的东西在 Page_Init 处设置值。

Value 是一个访问器,并且具有与此类似的内容:

public string Value{
  get...
  set{
    EnsureChildControls();
    MyHiddenField.Value=value;
  }
}

在这里我遇到了问题。它表示 MyHiddenField 为 null。 Page_Init 是不是太早了?或者我还需要调用其他函数吗?

The way this page is laid out, all of the data is loaded at Page_Init. Well, I have a custom control that is having problems with this though.

I have it on the page like so:

<cc:SomeControl... />

And then I set the value at Page_Init using

MyControl.Value="blah";

Simple stuff..

The Value is an accessor and has something similar to this:

public string Value{
  get...
  set{
    EnsureChildControls();
    MyHiddenField.Value=value;
  }
}

and it is here that I have a problem. It says that MyHiddenField is null. Is Page_Init just too early for this? Or is there some other function I need to call?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

起风了 2024-09-18 15:26:11

解决此问题的方法是从使用命名空间引用 CustomControl 更改为使用 src 并将文件名

更改

<%@ Register Assembly="MyProduct" Namespace="MyProduct.CustomControls" TagPrefix="cc" %>

为:

<%@ Register src="/CustomControls/MyControl.ascx" tagname="MyControl" tagprefix="uc2" %>

The fix for this was changing from using a namespace to reference the CustomControl to using a src with a filename

changing this:

<%@ Register Assembly="MyProduct" Namespace="MyProduct.CustomControls" TagPrefix="cc" %>

to this:

<%@ Register src="/CustomControls/MyControl.ascx" tagname="MyControl" tagprefix="uc2" %>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文