我 1 正在Control
注册用户控件 web.config
:
<configuration>
<system.web>
<pages validateRequest="false">
<controls>
<add src="~/GenericControls/Toolbar.ascx"
tagName="Toolbar" tagPrefix="Vista" />
</controls>
</pages>
</system.web>
<configuration>
现在,因为我的“用户控件”是Control
,而不是UserControl
(为了支持模板),这会导致Visual Studio错误:< / p>
ASPNET:确保此代码文件中定义的类与'inherits'属性匹配,并且它扩展了正确的基类(例如Page或UserControl)。
此错误的修复方法是have to remind Visual Studio that the *controlinherits from
Control`:
<%@ Page language="c#" Inherits="University.AspNet.Index"
CodeFile="Index.aspx.cs" CodeFileBaseClass="XXXXXX" %>
具有超级秘密CodeFileBaseClass
属性。除了我没有使用页面指令,我在web-config中注册控件站点范围:
<add src="~/GenericControls/Toolbar.ascx"
tagName="Toolbar" tagPrefix="Vista" />
如何在CodeFileBaseClass
内指定web.config
?
这个问题是正在进行的Stackoverflow系列中的一个,“模板化用户控件”:
答案 0 :(得分:1)
试试这个:
<system.web>
<!-- ... -->
<pages pageBaseType="MyWeb.UI.MyPageBase" />
<!-- ... -->
</system.web>
另请参阅以下链接:
http://blogs.msdn.com/b/tom/archive/2008/08/22/known-issues-for-asp-net-with-net-3-5-sp1.aspx
http://forums.asp.net/t/1305800.aspx
建议的解决方法:
如果所有页面都不需要pageBaseType类(例如,MyBasePage),则可以从web.config文件中删除它,或者
如果页面确实需要pageBaseType值,请修改代码隐藏文件中的类以扩展基本类型。在filename.aspx.cs代码隐藏文件中,确保该类继承自web.config文件中指定的pageBaseType(例如,公共部分类CodeFileClass:MyBasePage而不是公共部分类CodeFileClass:System.Web .UI.Page)。
另一种解决方法是允许您将以下属性添加到页面指令中:
CodeFileBaseClass="System.Web.UI.Page"