更改自定义 Atlas 控件项目的命名空间时出现“未识别的标签”问题
本文提供了解决Atlas控件“未识别的标签”问题的步骤。
引言
在开发了一个Atlas复合社会保障控件后,我想将根命名空间从默认值 (<项目名称>) 更改为我公司所遵循的标准。 我认为这应该很简单; 我大吃一惊。 基本上,我打开了项目属性,并将根命名空间从“AmericanSSN”(这是我的项目名称)更改为“AO.Web.UI.AtlasControls”。 我重新编译了项目,将其包含在工具箱中,并将复合控件放置在 ASPX 页面上,该控件在设计时呈现正常。 当页面在运行时加载时,我收到了“未识别的标签”错误,针对“americanssn:AmericanSSNBehavior”。 查看呈现的 HTML,我发现在扩展器类生成的 XML 脚本部分下,Page
标签和Behavior
呈现为
<page ….
xmlns:americanssn="americanssn">
<behaviors>
<americanssn:AmericanSSNBehavior MyProperty=""
PageRequestManagerID="_PageRequestManager"
id="AmericanSSNControl1_SSNProperties" />
</behaviors>
接下来,我使用 ILDASM 检查了生成的程序集。 在MANIFEST
部分的末尾,有以下条目将 JavaScript 资源捆绑到程序集中
.mresource public AO.Web.UI.AtlasControls.AmericanSSNBehavior.js
{
// Offset: 0x00000000 Length: 0x00001AD0
}
由于我更改了根命名空间,我现在必须更改扩展器文件,以便它呈现以下内容<page ….
xmlns:ao.web.ui.atlascontrols="ao.web.ui.atlascontrols">
<behaviors>
<ao.web.ui.atlascontrols:AmericanSSNBehavior MyProperty=""
PageRequestManagerID="_PageRequestManager"
id="AmericanSSNControl1_SSNProperties" />
</behaviors>
我还必须更改 JavaScript 文件。 以下三个步骤解释了所需的更改。
第 1 步。
对项目属性的修改:单击项目属性并将根命名空间从<项目名称>更改为AO.Web.UI.AtlasControls。第 2 步。
对扩展器文件(AmericanSSNExtender.vb)的修改
修改“程序集资源属性”区域,单击 + 号以打开该区域,并将 JavaScript 文件的命名空间限定符从<项目名称>更改为根命名空间。 修改ClientScriptResource
类属性标签,将前缀参数从<项目名称>更改为根命名空间,并更改 JavaScript 文件的命名空间限定符红色标记的部分被替换为蓝色标记的部分
步骤 3。
对行为文件(AmericanSSNBehavior.vb)的修改
红色标记的部分在 JavaScript 文件的不同位置被替换为蓝色标记的部分
以上更改为