自分自身を初期化する方法を決定するパラメーターを取る WebUserControls がいくつかあります。ただし、ページをコンパイルするとエラーが発生します
'ControlName' does not contain a constructor that takes '0' arguments
引数なしでどこでも呼び出していません。参照が一時ファイルに生成されているようです。空のコンストラクターを持たない別のコントロールがあり、そこにコンストラクターを作成する必要がないため、コンストラクターを持つ必要はありません。
実際のエラーは次のようになります。
コンパイラ エラー メッセージ: CS1729:
'ControlName' には、'0' 引数を取るコンストラクターが含まれていません
ソース エラー:
108 行目: private static bool @__initialized; 109 行目: 110 行目:
[System.Diagnostics.DebuggerNonUserCodeAttribute()] 111 行目: public control_ascx() { 112 行目:
((global::ControlNamespace)(this)).AppRelativeVirtualPath = "~/ControlName.ascx";ソース ファイル: (パス)Local\Temp\Temporary ASP.NET Files\root\1aca8e08\3fab105e\App_Web_controlname.ascx.cdcab7d2.tzm0xzkd.0.cs 行: 110
コントロールは次のようになります。
public partial class ControlName: System.Web.UI.UserControl
{
public ControlName(IParameter parameter)
{
Method(parameter);
}
}
編集:以下のコメントに基づいて、デザイナー ファイル内のコントロールへの参照があるように見えます...どこか...私が見つけることができるすべての参照は、1 つの例外を除いてコード ビハインドにあります。.ascx ファイルの宣言:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ControlName.ascx.cs" Inherits="Control" %>
これが原因だと思いましたが、さらに調べてみると、同様の宣言があり、デフォルトのコンストラクターを必要としない他のコントロールがあります。
コントロールが参照されている場所を見つけるにはどうすればよいですか?
解決:
参照タグがありました
<%@ Reference Control="~/ControlName.ascx" %>
明らかにデザイナー要素として数えられる以前の残り物。
以下の回答には、実際にはこの情報は含まれていませんが、問題の内容をよく説明しています。