【发布时间】:2014-04-10 21:32:40
【问题描述】:
我正在构建我的第一个 ASP.net 自定义控件,并且正在试验设置控件初始标记的 ToolboxDataAttribute。
到目前为止,我所看到的是,您无法为控件选择任何所需的标记名称,因为它应该与控件的 className 匹配才能正常工作。在此示例中,我有“MyControl”类并使用 ToolboxDataAttribute 设置了自定义 TagName:
[DefaultProperty("Text")]
[ToolboxData("<{0}:MyCustomTagName runat=server></{0}:MyCustomTagName>")]
public class MyControl : WebControl
{
}
当我尝试在项目中使用此自定义控件时,我将其从工具箱中拖放并呈现为:
<%@ Register assembly="TestCustomControl" namespace="TestCustomControl" tagprefix="cc1" %>
...
<cc1:MyCustomTagName ID="MyCustomTagName1" runat="server"></cc1:MyCustomTagName>
但是当我尝试运行它时,项目一直告诉我:MyCustomTagName 不是已知元素,我无法构建它。
我玩了一下,意识到如果我将 TagName 更改为控件的 ClassName,控件就可以工作,所以以下工作:
<cc1:MyControl ID="MyCustomTagName1" runat="server"></cc1:MyControl>
所以我的问题是:
如果您不能更改控件的 tagName,那么 ToolboxDataAttribute 的意义何在? 我可以想象它可能是为了从头开始添加更多标记,但我想知道我是否可能会出现 TagName 与控件的 ClassName 不匹配的情况。
我尝试将 TagName 属性添加到 @Register 指令,但如果我这样做了,它会要求 Src 属性,因为它属于用户控件语法而不是自定义控件语法。有什么想法吗?
【问题讨论】:
标签: asp.net controls custom-controls naming custom-attributes