继承 Web 控件时出错

本文关键字:出错 控件 Web 继承 | 更新日期: 2023-09-27 18:34:38

我正在尝试向我的 asp.net 应用程序添加新的自定义 Web 控件。

这是我的自定义控件的代码

using System.Web.UI.WebControls;
namespace MyPersonalCareHealthRecord.classes.extended
{
    public class TableHeaderDataCell : TableHeaderCell
    {
        public string MappedDataField { get; set; }
    }
}

在我的标记中,我使用以下代码

    <dt:TableHeaderDataCell CssClass="HeaderField" runat="server">Test1</dt:TableHeaderDataCell>

在得到一些错误,做一些研究,并阅读这篇文章之后http://msdn.microsoft.com/en-US/library/1e9b4c9f(v=vs.80(.aspx(以及引用我在 asp.net 上的一本书(我尝试添加像这样的寄存器指令并将我的标记调整为上述指令。

<%@ Register TagPrefix="dt" TagName="TableHeaderDataCell" namespace="MyPersonalCareHealthRecord.classes.extended" %>

但是,在尝试加载页面时,我收到一个错误:"该指令缺少'src'属性。我尝试将我的指令更改为:

<%@ Register TagPrefix="dt" TagName="TableHeaderDataCell" src="~/Classes/TableHeaderDataCell.cs" %>

然后得到错误:"文件'src'在这里无效,因为它没有公开类型。经过进一步的研究并找到这篇堆栈溢出文章如何在 ASP.NET 页上使用子类化控件?我尝试将我的注册指令更改为

<%@ Register TagPrefix="dt" TagName="TableHeaderDataCell" namespace="MyPersonalCareHealthRecord" assembly="MyPersonalCareHealthRecord" %>

这导致了错误:"指令缺少'src'属性。在中添加 src 属性给了我错误:"当存在'tagname'属性时,此指令不支持'命名空间'属性。

删除 tagname 属性给了我错误,删除命名空间标签名称也是如此......

我知道这是一个冗长的问题,但任何人都可以帮助我吗???我不知道我做错了什么。

继承 Web 控件时出错

转到添加 WebForms 用户控件。

添加后,转到控件(cs文件(的代码隐藏,您可以将属性放在那里

public string MappedDataField { get; set; }

省省吧。

转到解决方案资源管理器,只需将其拖到 Web 窗体中即可。

在后面的 Web 窗体代码中,您可以访问该属性。

MyControlName.MappedDataField = "whatever text";

好的,我相信我已经解决了....我按照此链接中的说明进行操作:http://msdn.microsoft.com/en-us/library/aa310915(v=vs.71(.aspx

我从自定义控件源代码文件创建了一个.dll,然后确保.dll位于项目的/bin 目录中。 将我的注册指令更改为:

<%@ Register TagPrefix="dt" Namespace="MyPersonalCareHealthRecord.classes.extended" Assembly = "TableHeaderDataCell" %>

(TableHeaderDataCell 是 dll 文件的名称(起初,我收到有关类型在两个地方的错误,因此我在工作之前从 bin 目录中删除了.cs文件。我在实际代码隐藏文件中引用我的新类型时也遇到了一些问题,因此我必须添加引用并浏览到新的 dll 并在我的项目中添加对它的引用。添加引用后,我能够在我的代码隐藏文件中使用它。