类型'_Default'已经定义了一个名为'Page_Load'的成员,它具有相同的参数类型

时间:2011-04-01 08:41:09

标签: asp.net pageload

我一直在我的aspx项目中重命名一些类和包,现在我有这个错误:

  

“Type'_Default'已经定义了一个名为'Page_Load'的成员   相同的参数类型“

我有两个aspx页面。在default.aspx代码隐藏中,我看到:

Default.aspx的:

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="_Default" %>

Default.aspx.cs:

public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        //error line under 'Page_Load'
    }

search.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="search.aspx.cs" Inherits="_Default" %>

search.aspx.cs:

public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)

    }

我添加到项目中的每个新ASPX页面都会自动添加到某个命名空间中。

我尝试过更改继承attribuut。但我无法找到解决此错误并摆脱命名空间的方法。

我正在使用Visual Studio 2010.

My project structure

5 个答案:

答案 0 :(得分:6)

根据您的文件夹结构,您添加的每个页面都会自动配置为命名空间。我没有看到足够的代码和结构,但你确定,你没有定义两次Page_Load吗?至少错误信息是这样说的。即使使用与_Default不同的类名,它的行为是否相同?

编辑后:

是的,我们走了。您在Default.aspx和Search.aspx中定义了相同的类(_Default)...您应该根据约定重命名您的类。即:在Default.aspx中使用“默认”类,并在Search.aspx中使用“搜索”类

答案 1 :(得分:6)

双击错误,暂时将Page_Load重命名为其他内容。进入函数体并键入Page_Load。按F12。这将使您到达已定义第二个Page_Load方法的位置。您可能会看到它位于相同命名空间中的另一个部分 _Default类中。

答案 2 :(得分:3)

只是添加一个特定的案例。

将网站转换为Web应用程序时,您可能会遇到这种情况。

当你的网站形式的项目,当你将例如Default.aspx添加到两个不同的文件夹时,他们都创建了没有具有相同类名的命名空间。两者都宣布部分并且它很好。但是,当您转换为Web应用程序并尝试构建时,它们会在同一名称空间中开始冲突,声明为partial并拥有自己的Page_Load方法。

其中一个解决方案可以根据文件夹结构提供不同的类名或封装到不同的名称空间中。

答案 3 :(得分:1)

由于您的班级是public partial class _Default,因此可能会出现一些导致问题的命名。尝试识别_Default的其他部分。因为它是一个部分类,你可以拥有你想要的尽可能多的部分。问题可能是在其中一个中定义了Page_Load。

答案 4 :(得分:0)

下面是我将文件复制到我的解决方案时遇到的问题,点击报告的错误或“转到定义”误导我发现原因。提示是上面的一行.....!

我正在揭露问题以及我最终如何解决它

构建应用程序时

错误

  • 错误1类型'Solution1.Web.yourABC'已定义成员 称为'Page_Load'具有相同的参数类型
    C:\\ trunk \ Solution1.Web \ yourABC.aspx.cs 12 24
    Solution1.Web

  • 错误2类型'Solution1.Web.yourABC'已定义成员 称为'Page_Load'具有相同的参数类型
    C:\\ trunk \ Solution1.Web \ GuideABT.aspx.cs 12 24
    Solution1.Web

问题是如何产生的: 我在同一解决方案中复制/粘贴文件.aspx以生成新文件。 C#:下面的错误开始出现;最糟糕的其他误导性错误在运行时开始影响应用程序:

*请注意错误1不是错误它是正确的,因为它是源代码

Error    1    Type 'Solution1.Web.yourABC' already defines a member called 'Page_Load' with the same parameter types    C:\<folderpath>\trunk\Solution1.Web\yourABC.aspx.cs    12    24    Solution1.Web 

Error    2    Type 'Solution1.Web.yourABC' already defines a member called 'Page_Load' with the same parameter types    C:\<folderpath>\trunk\Solution1.Web\GuideABT.aspx.cs    12    24    Solution1.Web 

两个类“Page_Load”都是空的,通常它们是由Visual Studio Engine自动生成的

<强>解决方案: 更改新创建/粘贴的aspx页面的.cs文件以反映类“名称”后面的页面名称。在这种情况下,“GuideABT.aspx”是新粘贴的&amp;重命名为aspx文件:

错误1的更正:无需更正,因为它是从文件中复制的。请确保.cs文件中文件的名称和类引用的名称相同:

文件名为yourABC.aspx,请检查.cs扩展文件:

namespace Solution1.Web
{
    public partial class yourABC : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }
}

错误2的更正:修改粘贴的文件。更正CLASS NAME以反映.aspx文件的名称。

文件名GuideABT.aspx,检查.cs扩展名文件: .cs中的ORIGINAL代码

namespace Solution1.Web
{
    public partial class *yourABC* : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }
}

将此代码更正为.cs TO

namespace Solution1.Web
{
    public partial class **GuideABT** : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }
}

问题已解决。

干杯。