15

基本クラスにはフィールド 'lbl' が含まれていますが、そのタイプ (web.App_Code.CustomLabelControl) はコントロールのタイプ (web.App_Code.CustomLabelControl) と互換性がありません。

以前は同じ方法で多くのカスタム コントロールを行っていましたが、今日このエラーに遭遇しました。

App_Codeクラス内のコントロールの web.config 内のタグプレフィックス参照のディレクトリ内に以下のクラスを持つ Web アプリケーション プロジェクトがあります。

私は今何をしますか?

Web.Config

<system.web>
    <pages>
        <controls>
            <add namespace="web.App_Code" tagPrefix="CControls"/>...

マークアップ

<form id="form1" runat="server">
<div>
    <CControls:CustomLabelControl runat="server" OnClickText="Welcome" ID="lbl">
    </CControls:CustomLabelControl>
</div>
</form>

クラスファイル

namespace web.App_Code
{
    public class CustomLabelControl : Control, IPostBackEventHandler, IPostBackDataHandler
    {
        private string _onClickText;

        public CustomLabelControl()
        {

        }

        public string OnClickText
        {
            get { return _onClickText; }
            set { _onClickText = value; }
        }

        public void RaisePostBackEvent(string eventArgument)
        {
            throw new System.NotImplementedException();
        }


        public bool LoadPostData(string postDataKey, NameValueCollection postCollection)
        {
            throw new System.NotImplementedException();
        }


        public void RaisePostDataChangedEvent()
        {
            throw new System.NotImplementedException();
        }
    }
}

私はすでにこれらのリソースをチェックしました:

4

5 に答える 5

5

アセンブリ名も指定してみてください。

<add tagPrefix="CControls" namespace="web.App_Code" assembly="web.App_Code" />

わかりやすくするために、カスタム コントロール専用の名前空間を作成することを検討します。たぶん次のようなものweb.App_Code.CustomControls

<add tagPrefix="CControls" namespace="web.App_Code.CustomControls" assembly="web.App_Code.CustomControls" />
于 2011-11-22T17:15:28.870 に答える
1

次のように aspx ページではなく、web.conf で ascx ユーザー コントロールを参照します。

<add tagPrefix="proj1" src="~/userControls/Invoiceshow.ascx" tagName="proj1tagname">

それは私の問題を解決しました。

于 2013-09-18T14:36:26.303 に答える
1

これが古いことは知っていますが、テキスト ボックスをラベル コントロールに変更しようとして同じエラーが発生しました。コントロールの ID を「Insulin」から「Insulin2」に変更するだけで問題が解決しました。なぜうまくいったのかはわかりませんが、それはマイクロソフトの問題かもしれません。

これをさらに調べたところ、Visual Studio で作業していたページのタブを閉じてから再度開くと、エラーがすべて消えてしまうことに気付きました。これが誰かに役立つことを願っています。

于 2017-09-06T12:18:50.400 に答える
1

Web フォーム Web サイトを MVC Web アプリに変換し、ターゲット フレームワークを 4.6 に変更しているときに、この問題が発生しました。私にとっての解決策は、web.config のページ要素に controlRenderingCompatibilityVersion 属性を設定することでした。

<system.web>
   <pages validateRequest="true" controlRenderingCompatibilityVersion="4.6" clientIDMode="AutoID">
</system.web>
于 2019-01-17T15:17:14.177 に答える