【问题标题】:How come I can add my UserControl by src and tagname, but not by assembly and namespace?为什么我可以通过 src 和标记名添加我的 UserControl,而不是通过程序集和命名空间?
【发布时间】:2011-07-30 02:33:40
【问题描述】:

我有几个用户控件是 .cs 文件并扩展了 WebControl。我通过以下方式将它们添加到我的 .aspx 页面中:

<%@ Register TagPrefix="uc" Namespace="AssemblyName.My.Namespace" Assembly="AssemblyName" %>

但是,我发现我不得不通过 HtmlTextWriter 进行大量渲染。所以我想转向为我的用户控件使用 .ascx 文件。但是,如果我使用以下语法,它们只会显示在页面上:

<%@ Register src="../../../controls/MyCustomControl.ascx" tagname="MyCustomControl" tagprefix="uc" %>

这些 .ascx 控件扩展了 UserControl,并且关联的代码隐藏与我的 .cs Web 控件位于相同的命名空间中。

【问题讨论】:

标签: c# asp.net user-controls


【解决方案1】:

“我有几个用户控件是 .cs 文件”

这些是“自定义控件”或“网络控件”,而不是 UserControls。 UserControls 有一个与之关联的标记并继承UserControl

“但是,如果我使用以下语法,它们只会显示在页面上:”

这是因为UserControls 是拆分(部分)类,其中包含未编译部分(标记)。您可以仅使用程序集引用添加它们,并且项目将编译。但是,不会加载标记组件,并且在运行时会出现对象引用错误等。

【讨论】:

  • “你会在运行时遇到对象引用错误”......这正是正在发生的事情!看到您的回答后,我做了一些快速研究,发现添加 UserControl 确实与将 WebControl 添加到 aspx 不同。感谢您的信息!
猜你喜欢
  • 1970-01-01
  • 2013-02-05
  • 1970-01-01
  • 2018-10-21
  • 2017-08-27
  • 1970-01-01
  • 2015-01-25
  • 2010-10-14
  • 2016-07-24
相关资源
最近更新 更多