1

私は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ため、これによりVisualStudioエラーが発生します。

ASPNET:このコードファイルで定義されたクラスが'inherits'属性と一致し、正しい基本クラス(PageやUserControlなど)を拡張していることを確認してください。

このバグの修正は、* control inherits fromControl`:をVisualStudioに通知する必要があることです。

<%@ Page language="c#" Inherits="University.AspNet.Index"  
      CodeFile="Index.aspx.cs" CodeFileBaseClass="XXXXXX" %>

超秘密のCodeFileBaseClass属性で。Pageディレクティブを使用していないことを除いて、サイト全体のコントロールをweb-configに登録しています。

<add src="~/GenericControls/Toolbar.ascx" 
      tagName="Toolbar" tagPrefix="Vista" />

CodeFileBaseClass内から指定するにはどうすればよいweb.configですか?

シリーズ

この質問は、進行中のStackoverflowシリーズ「ユーザーコントロールのテンプレート」の1つです。

4

1 に答える 1

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 : System.Web ではなく、パブリック部分クラス CodeFileClass : MyBasePage )。 .UI.ページ)。

別の回避策として、ページ ディレクティブに次の属性を追加できます。

CodeFileBaseClass="System.Web.UI.Page"
于 2012-09-08T09:05:46.213 に答える