2017-07-06 10 views
1

I(今のところ、多くの同じ名前空間になります)なぜ私のaspxデザイナーファイルがユーザーコントロールを間違って参照していますか?

Ortund.Project.UserControls.FooControl 
Ortund.Project.UserControls.BarControl 

私は、これらのコントロールが正常に動作するようになっている、これらは正しく私のweb.configファイルで(私はこれを知っている参照してきた以下のユーザーコントロールを持っていますページ上で)。少なくとも、それは、ページのデザイナファイルが正しく、上記の名前空間にそれらを参照するかどう

<div> 
    <ortund:Foo runat="server" ID="oFoo" /> 
    <ortund:Bar runat="server" ID="oBar" /> 
</div> 

<pages> 
    <controls> 
     <add tagPrefix="ortund" tagName="Foo" src="~/UserControls/FooControl.ascx" /> 
     <add tagPrefix="ortund" tagName="Bar" src="~/UserControls/BarControl.ascx" /> 
    </controls> 
</pages> 

これは、次のように私のマークアップのコントロールを使用することができます。

代わりに、私は私のデザイナーのファイル内で検索すると、これは次のとおりです。今

/// <summary> 
    /// oFoo control. 
    /// </summary> 
    /// <remarks> 
    /// Auto-generated field. 
    /// To modify move field declaration from designer file to code-behind file. 
    /// </remarks> 
    protected global::System.Web.UI.UserControl oFoo; 

    /// <summary> 
    /// oBar control. 
    /// </summary> 
    /// <remarks> 
    /// Auto-generated field. 
    /// To modify move field declaration from designer file to code-behind file. 
    /// </remarks> 
    protected global::System.Web.UI.UserControl oBar; 

、私が行くと、それを変更するが、ファイル以来、自動生成されることができ、それだけのために再び変化する傾向があります明白な理由はありません。その結果、ユーザーコントロールで使用できるパブリックフィールドにアクセスすることはできませんが、これは機能上の大きな問題です。

なぜ私のデザイナーファイルはそんなにばかげていて、どうしてばかげて間違っていて、どうすれば修正できますか?

答えて

1

UserControlの私の経験では、通常、あなたのコントロールの名前空間に「奇妙な」ものがあるか、Visual Studioが頭を上げられない継承階層があるか、 web.configのアプリケーションレベル以下のものを実行します(通常は、名前空間の一部が切り捨てられ、.designer.csがコンパイルを拒否します)。

私はちょうど上のあなたの例「単純な」再生を作成しましたし、設計者が権利としての宣言を取得する:あなたが持っている一つの選択肢は、「(すぐに宣言の上のコメントに基づいて行動することです

protected global::Ortund.Project.UserControls.FooControl oFoo; 

デザイナーファイルからコードビハインドファイルへの移動フィールド宣言を変更する」).designer.csファイルの宣言を.csファイルに移動します。このは、誤った宣言を再生成するのをやめさせますが、それが既に行われているという事実は、十分にが間違っていることを意味するかもしれません。

あなたのUserControlsとページのソリューション/プロジェクト構造と継承階層(もしあれば)についての詳細は、これを絞り込むのに役立ちます!

+1

残念ながら私は他のどの情報を提供するのか分かりませんが、これらのフィールド宣言を自分のコードビハインドファイルに移動したことで問題が解決されたことを確認できます。 – Ortund

+0

@Ortund、それは回避策ですが、少なくともそれはあなたのブロックを解除します)===確認するべきこと(a)あなたのアプリケーションレベルweb.configに宣言はありますか? (b)そこにweb.configがあり、そこにはページがあるフォルダとの間にフォルダがありますか?おそらくセクションを変更/クリアしていますか? (c)同じ名前の他のクラスはありますか?私は上記のすべての奇妙な原因を見てきた=( – Rob

関連する問題