【问题标题】:Import user control to live website将用户控制导入实时网站
【发布时间】:2012-12-24 00:09:05
【问题描述】:

我有一个网站,它将用户控件 (.ascx) 导入到实时网站的目录中。

显然,一旦用户控件被导入目录,它实际上并不是网站的“一部分”,它只是位于网站目录中的一个 .ascx 文件。

当我尝试将用户控件添加到面板时,我收到“无法加载类型 'CMS.Modules.HelloWorld'”。错误。

    Control content = LoadControl(@"~/Modules/" + ddlExtraModules.SelectedValue.ToString() + "/HelloWorld.ascx");
    pnlSections.Controls.Add(content);

是否真的可以“即时”向网站添加用户控件?

【问题讨论】:

  • bin文件夹中是否存在用户控件使用的程序集?
  • 不,但我也有一些与网站一起编译的用户控件,在 bin 文件中没有引用这些,但它们可以工作。
  • 看起来您可以在 Web 应用程序 jit 编译时动态添加 ascx 文件(及时)。

标签: user-controls webforms


【解决方案1】:

看起来您可以在运行时编译的 Web 应用程序中动态添加 ascx 文件。仅在网络表单上使用它们,不要直接请求它们。

http://msdn.microsoft.com/en-us/library/system.web.ui.usercontrol.aspx

另外,设计者创建了@Register指令,即 页面识别用户控件所必需的。

http://msdn.microsoft.com/en-us/library/5d0t5fak%28v=vs.80%29.aspx

【讨论】:

  • 不能使用设计器添加@Register 指令。这一切背后的想法是每个网站“购买”用户控件。然后将它们上传到与用户控件表中的唯一 ID 同名的文件夹,即:~/Modules/85/HelloWorld.ascx。从绑定到此表的下拉列表中,添加用户控件 - LoadControl(~/Modules/85/HelloWOrld.ascx)。
  • 在这种情况下你不能(不使用 loadcontrol):msdn.microsoft.com/en-us/library/c0az2h86%28v=VS.71%29.aspx "LoadControl 方法。然而,首先,你必须通过使用 @Control 上的 className 属性将强类型与用户控件相关联指令”也许如果你不将它转换为特定类型,它会起作用,但你不能调用该用户控件的特定功能。
猜你喜欢
  • 1970-01-01
  • 2011-04-29
  • 1970-01-01
  • 2021-12-15
  • 2011-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-23
相关资源
最近更新 更多