【问题标题】:How to inherit from Control, rather than UserControl?如何从 Control 继承,而不是 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

系列

这个问题是 Stackoverflow 系列中的一个,“模板化用户控件”

【问题讨论】:

  • 为什么你需要继承自 Control 而不是 UserControl?这当然是合法的,但是从您提供的链接中,我不明白您在尝试什么。
  • @aquinas:因为UserControl 没有名为ContentTemplate 的公共属性
  • 啊,它得到了设计师的支持。明白了。是的,它也从来没有为我工作过,但是我在设计器中的唯一一次是当我去“哦,废话!我不小心按了设计器按钮,现在我必须等待 5 分钟。”

标签: asp.net user-controls controls


【解决方案1】:

尝试从 WebControl 继承,然后使用 Register 而不是 Control。 类似这样:http://www.codeproject.com/Articles/2748/Building-an-ASP-NET-custom-web-control-a-textbox-a

【讨论】:

    【解决方案2】:

    您尝试制作自定义控件而不是用户控件,在这种情况下,您不能使用 ascx 文件来保存您的设计,但需要务实地设计它们。

    【讨论】:

      猜你喜欢
      • 2010-10-27
      • 1970-01-01
      • 1970-01-01
      • 2010-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-01
      相关资源
      最近更新 更多