继承Web控件的错误

时间:2014-12-19 05:50:28

标签: c# asp.net .net

我正在尝试向我的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'在这里不是有效的,因为它没有公开类型。” 经过进一步研究并找到此stackoverflow文章How to use a Subclassed Control on an ASP.NET Page? 我尝试将我的register指令更改为

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

导致错误:“该指令缺少'src'属性。” 添加src属性给了我错误:“当'tagname'属性存在时,此指令不支持'namespace'属性。”

删除tagname属性会给我带来错误,同时删除命名空间标记名......

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

2 个答案:

答案 0 :(得分:1)

转到添加Webforms用户控件。

添加后,转到控件后面的代码(cs文件),然后将属性放在那里

public string MappedDataField { get; set; }

保存。

转到解决方案资源管理器,只需将其拖到您的网络表单中即可。

在您的webform代码中,您可以访问该属性。

MyControlName.MappedDataField = "whatever text";

答案 1 :(得分:0)

好的,我相信我已经解决了....我按照此链接的说明操作: 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并在我的项目中添加对它的引用。添加引用后,我可以在我的代码隐藏文件中使用它。