【问题标题】:How to use my asp.net custom control (Extends System.Web.UI.UserControl)?如何使用我的 asp.net 自定义控件(扩展 System.Web.UI.UserControl)?
【发布时间】:2012-08-20 10:29:34
【问题描述】:

我使用的是 asp.net 4,与 2010 相比。

我有一个网站项目,其中包含一些分页 (apsx) 和 WebServices (asmx)。

我正在尝试使用我的项目中包含的自定义 UserControl。

WebControl/UserControl 是一个纯 c# 类,没有 aspx/ascx/asmx。该类配置如下:

public class DropDownMenu : UserControl

意味着它扩展了 System.Web.UI.UserControl,并且它覆盖了一堆 UserControls OnPreRender、OnLoad等方法

这个文件编译正常,但是我没有成功在aspx文件中使用它。

我尝试了以下方法:

  <%@ Register TagPrefix="My" TagName="DropDownMenu"  
Src="DropDownMenu.cs"%>

但是这确实有效。我收到一个运行时错误:

文件 'src' 在此处无效,因为它没有公开类型。

我也试过了

<%@ Register Assembly="DropDownMenu" Namespace="MyNameSpace" TagPrefix="My" %>

我收到了运行时错误

无法加载文件或程序集“DropDownMenu”或其依赖项之一。系统找不到指定的文件。

有谁知道如何将我的类用作 asp 标签/控件? 我只想在 aspx 页面中使用以下内容:

【问题讨论】:

    标签: asp.net user-controls custom-controls


    【解决方案1】:

    注册:

    <%@ Register TagPrefix="My" Assembly="AssemblyName" NameSpace="NameSpace"%>
    

    这里AssemblyNameSpace 包含定义控件类的程序集和命名空间的名称,它们都不是控件本身的名称。请注意,程序集名称不包括文件扩展名。

    用法:

    <My:DropDownMenu ...>
    

    【讨论】:

    • 我试过这个我在上面写过
    • @meyou, DropDownMenu 是定义控件的程序集的名称吗?
    • @meyou,您的解决方案的结构是什么?如果您的所有代码都位于一个 Web 项目中,那么程序集很可能与项目本身具有相同的名称。
    • 正如你所说,我设法完成了这项工作。但我只能使用 DropDownMenu,尽管我在同一个文件中有很多类。这是为什么呢?
    • @meyou,只有代表控件的类(我相信继承自 Control 类)在标记中可供您使用。用法相同:&lt;My:ControlName ...&gt;.
    猜你喜欢
    • 1970-01-01
    • 2010-12-12
    • 2016-06-22
    • 1970-01-01
    • 1970-01-01
    • 2013-07-26
    • 2022-12-05
    • 2011-03-15
    • 2012-03-08
    相关资源
    最近更新 更多