我尝试在 webconfig 文件中注册我的用户控件,因为我收到“元素不存在”错误,但当我尝试在 webconfig 中注册它们时,我收到以下错误:
Invalid or missing attributes found in the tagPrefix entry. For user control, you must also specify 'tagName' and 'src'. For custom control, you must also specify 'namespace', and optionally 'assembly'
以下是 Web 配置文件中的代码:
<pages>
<controls>
<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add tagPrefix="IPAMControl" tagName="contact_us" namespace="IPAM.Website.Controls" src="~/controls/contact_us.ascx" />
<add tagPrefix="IPAMControl" tagName="erh_list" namespace="IPAM.Website.Controls" src="~/controls/erh_list.ascx" />
<add tagPrefix="IPAMControl" tagName="header" namespace="IPAM.Website.Controls" src="~/controls/header.ascx" />
<add tagPrefix="IPAMControl" tagName="footer" namespace="IPAM.Website.Controls" src="~/controls/footer.ascx" />
<add tagPrefix="IPAMControl" tagName="main_tnavbar" namespace="IPAM.Website.Controls" src="~/controls/main_tnavbar.ascx" />
<add tagPrefix="IPAMControl" tagName="program_header" namespace="IPAM.Website.Controls" src="~/controls/program_header.ascx" />
<add tagPrefix="IPAMControl" tagName="program_list" namespace="IPAM.Website.Controls" src="~/controls/program_list.ascx" />
<add tagPrefix="IPAMControl" tagName="signup_section" namespace="IPAM.Website.Controls" src="~/controls/signup_section.ascx" />
<add tagPrefix="IPAMControl" tagName="speaker_list" namespace="IPAM.Website.Controls" src="~/controls/speaker_list.ascx" />
<add tagPrefix="IPAMControl" tagName="track" namespace="IPAM.Website.Controls" src="~/controls/track.ascx" />
</controls>
</pages>
存在此问题的页面也会引用母版页(如果这很重要的话):
<%@ Page Language="C#" AutoEventWireup="true" MasterPageFile="~/programs/MasterProgram.master" CodeBehind="~/programs/wim2011/default.aspx" Inherits="IPAM.Website.programs.wim2011._default" %>
它们都在自己的文件夹中。
请帮忙。
摆脱命名空间属性,因为它会使 ASP.NET 混淆您是尝试注册用户控件还是自定义控件。
用户控制:
<add tagPrefix="SomeTagPrefix" src="~/Controls/SomeControl.ascx" tagName="SomeTagName"/>
自定义控制:
<add tagPrefix="SomeTagPrefix" namespace="SomeNamespace" assembly="SomeAssembly"/>
所以,在你的例子中:
<add tagPrefix="IPAMControl" tagName="track" src="~/controls/track.ascx" />
在 ASPX/ASCX 上,您可以像这样使用它:
<IPAMControl:track id="ipamTrack" runat="server" />
See here了解更多信息。
EDIT
为了证明这是有效的 - 我做了以下操作:
- 创建新的 Web 应用程序
- 在 Web 应用程序的根目录中创建名为“Controls”的新文件夹
- 添加了一个名为“MyUserControl.ascx”的新“Web 用户控件”
- 修改web.config添加控件注册
- 修改Default.aspx以添加该控件。
一切都很好。
这是用户控件:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="MyUserControl.ascx.cs" Inherits="WebApplication1.Controls.MyUserControl" %>
<span>Hi, im a user control, how are you?</span>
这是我编辑的 web.config 部分:
<pages>
<controls>
<add tagPrefix="MyControls" tagName="MyUserControl" src="~/Controls/MyUserControl.ascx"/>
</controls>
</pages>
这是我所做的 Default.aspx 更改:
<MyControls:MyUserControl id="myUserControl" runat="server" />
并且页面正确呈现。
现在,除非我在这里所做的与您尝试执行的方式不同,否则您必须有其他代码/错误干扰此操作。
不知道我还能提供多少帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)