我有一些 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);
}
}
编辑:根据下面的评论,我似乎在设计器文件中引用了控件……某处……我能找到的所有引用都位于代码后面,但有一个例外。.ascx 文件中的声明:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ControlName.ascx.cs" Inherits="Control" %>
我认为这是罪魁祸首,但经过进一步检查,我还有其他具有类似声明且不需要默认构造函数的控件。
如何找到引用控件的位置?
解决方案:
我有参考标签
<%@ Reference Control="~/ControlName.ascx" %>
早期的剩余物显然算作设计师元素。
下面的答案实际上并不包含此信息,但很好地描述了问题所在。