临时文件包含对不带参数的构造函数的引用

时间:2010-03-03 17:32:23

标签: c# asp.net webusercontrol

我有一些WebUserControls接受参数来确定它们如何初始化自己。但是,当我编译页面时,我收到错误

'ControlName' does not contain a constructor that takes '0' arguments

我没有在没有参数的情况下调用它,似乎在临时文件中生成了引用。我有另一个没有空构造函数的控件,它不需要在那里创建一个,所以它不应该有一个。

实际错误如下:

  

编译器错误消息:CS1729:

     

'ControlName'不包含   采用'0'参数的构造函数

     

来源错误:

     第108行:私人静态布尔   @__initialized; 109行:行   110:
  [System.Diagnostics.DebuggerNonUserCodeAttribute()]   第111行:public control_ascx()   {第112行:
  ((全球:: ControlNamespace)(本))。AppRelativeVirtualPath   =“〜/ ControlName.ascx”;

     

源文件:   (Path)Local \ Temp \ Temporary ASP.NET   文件\ 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" %>

早些时候遗留下来,显然算作设计师元素。

下面的答案实际上并不包含这些信息,但很好地描述了问题所在。

5 个答案:

答案 0 :(得分:2)

我不是Web开发方面的专家,但看起来您已经在Web表单设计器上放置了一个控件实例,并且该设计器正在生成需要无参数构造函数的代码。

如果是这种情况,那么要解决此问题,您应该从表单中删除控件或添加无参数构造函数。

答案 1 :(得分:0)

CLR正在尝试将超类的默认构造函数调用到您的类,但它不能。显式调用合适的基础构造函数。

答案 2 :(得分:0)

当你有没有参数的ctor时,它会尝试在没有参数的情况下调用父类ctor。但它的基类没有。

答案 3 :(得分:0)

我不知道你是否属于这种情况。我在使用对象序列化时遇到了编译错误。如果我没记错的话,当我们独家使用XML序列化时,我们会得到这个错误。反序列化对象时,运行时使用的是默认构造函数,因此如果它没有,则编译器会对其进行标记。

答案 4 :(得分:0)

根据您的编辑,我认为这实际上可能是因为您选择的名称... Control。有许多Control类,可能是ascx中的声明存在名称空间冲突问题。尝试将您的控件重命名为其他内容。