【发布时间】:2013-02-19 20:45:29
【问题描述】:
我有一个 UserControl (ascx),它会根据用户的凭据加载另一个 UserControl (ascx)。当前要加载的控件,包含一个特殊的导航菜单。
我正在使用此代码:
UserControl jmNav =
(UserControl)Page.LoadControl("~/controls/client/jmNavigation.ascx");
然后,在更多的代码之后,我告诉它加载,像这样:
SBarTopWelcome.Controls.Add(jmNav);
问题是,我收到“对象引用未设置为对象的实例”错误。
是的,路径是正确的——我也这样尝试过(在所有变体中):
UserControl jmNav = (UserControl)Page.LoadControl("/client/jmNavigation.ascx");
这个(及其变种)告诉我它不存在。
所以!有什么想法吗?
【问题讨论】:
-
这是一个经典的“我在哪里创建我的控件”的问题。您从哪个事件中致电
UserControl jmNav = (UserControl)Page.LoadControl("~/controls/client/jmNavigation.ascx)? -
我有一个“受保护的空白”,它正在加载从标签到 css 类以及用户控件的所有内容 - 它在页面加载时被触发。
-
您是否在标记中添加了
Register行? -
我已经尝试过了——但在其他页面上,没有必要——不过,那些是在页面 (aspx) 上,而不是在用户控件 (ascx) 上。我什至做了一个“
-
您是否能够强定义用户控件,或者您只是使用基类(如
Control)?
标签: c# asp.net controls ascx webusercontrols