如何从 Control 继承,而不是 UserControl?
Posted
技术标签:
【中文标题】如何从 Control 继承,而不是 UserControl?【英文标题】:How to inherit from Control, rather than UserControl? 【发布时间】:2012-09-01 15:27:33 【问题描述】:我有一个继承自 UserControl
的 ASP.net 控件:
文件 1:
public partial class Controls_AllocationDuplicate : System.Web.UI.UserControl
文件 2:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="AllocationDuplicate.ascx.cs" Inherits="Controls_AllocationDuplicate" %>
I need the control to inherit from Control
, rather than UserControl
:
File.aspx.cs (已更改):
public partial class Controls_AllocationDuplicate : System.Web.UI.Control
File.aspx (未更改):
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="AllocationDuplicate.ascx.cs" Inherits="Controls_AllocationDuplicate" %>
当我这样做时,Visual Studio 会给出一个编译错误:
确保此代码文件中定义的类与“继承”属性相匹配,并且它扩展了正确的基类(例如 Page 或 UserControl)。
我怎样才能让我的控件继承自Control
而不是UserControl
?
系列
这个问题是 *** 系列中的一个,“模板化用户控件”:
How to add a Templating to a UserControl? How to inherit from Control, rather than UserControl? UserControl has IsPostBack, but Control does not UserControl does not have public property named ContentTemplate How do i specify CodeFileBaseClass from web.config?【问题讨论】:
为什么你需要继承自 Control 而不是 UserControl?这当然是合法的,但是从您提供的链接中,我不明白您在尝试什么。 @aquinas:因为UserControl
没有名为ContentTemplate
的公共属性
啊,它得到了设计师的支持。明白了。是的,它也从来没有为我工作过,但是我在设计器中的唯一一次是当我去“哦,废话!我不小心按了设计器按钮,现在我必须等待 5 分钟。”
【参考方案1】:
尝试从 WebControl 继承,然后使用 Register 而不是 Control。 类似这样:http://www.codeproject.com/Articles/2748/Building-an-ASP-NET-custom-web-control-a-textbox-a
【讨论】:
【参考方案2】:您尝试制作自定义控件而不是用户控件,在这种情况下,您不能使用 ascx 文件来保存您的设计,但需要务实地设计它们。
【讨论】:
以上是关于如何从 Control 继承,而不是 UserControl?的主要内容,如果未能解决你的问题,请参考以下文章
如何从代码隐藏中访问UserControl中样式的Setter中ControlTemplate中定义的Control实例?