代码之家  ›  专栏  ›  技术社区  ›  Giffyguy

在ASP.NET中扩展标准Web服务器控件功能的最佳方法是什么?

  •  2
  • Giffyguy  · 技术社区  · 13 年前

    目前我的代码类似于:

    <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="CustomPanel.ascx.cs"
    CodeFile="CustomPanel.ascx.cs" CodeFileBaseClass="System.Web.UI.WebControls.Panel"
    Inherits="MyProject.CustomPanel" %>
    

    ...

    namespace MyProject
    {   public partial class CustomPanel : System.Web.UI.WebControls.Panel
        { ... }
    }
    

    但是,我真的不确定如何从这里开始,因为这似乎没有遵循逻辑继承路径,其中包括 System.Web.UI.UserControl

    我做错什么了吗?如何继承Panel并扩展标准事件处理程序(如PreInit)?

    2 回复  |  直到 13 年前
        1
  •  1
  •   Andrew Barber Mike Nilson    13 年前

    你想不想 延伸 封装 Panel 在这里?

    扩展它不需要用户控件,而是需要一个普通的类文件,该类继承自 面板 .

    将其封装在用户控件中,就像您在这里所做的那样;在这种情况下,您将 面板 用户控件的ascx文件中的实例。。。你不想继承它。

    事实上,看起来你在试图同时做这两件事;你不应该那样做。没有直接继承路径,因为您似乎在寻找同时包含Usercontrol和Panel的路径;您必须选择上述选项之一或其他选项。

        2
  •  0
  •   Adam Vigh    13 年前

    要扩展它,您应该创建一个新类,继承System.Web.UI.WebControls.Panel类。一旦创建了自定义类,就可以从面板类中重写现有方法,这些类被标记为“虚拟”。(在Visual Studio中键入关键字override时,在类中会弹出一个虚拟方法列表)