如何从web.config指定CodeFileBaseClass?

时间:2012-09-07 20:49:45

标签: asp.net user-controls templating

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 fromControl`

<%@ 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系列中的一个,“模板化用户控件”

1 个答案:

答案 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"