ASP.net 错误:代码文件和继承属性不匹配



在 企业门户 中打开页面会导致 Windows-Event-Log 中显示的错误:

MyControl.ascx.cs(15):错误 ASPNET:确保此代码文件中定义的类与"inherits"属性匹配,并且它扩展了正确的基类(例如 Page 或 UserControl)。

第 15 行在下面的源代码中标有 (X)。

ASCX.CS 文件:

namespace Company.Productgroup
{
    (X) public partial class Productname : System.Web.UI.UserControl
    {
        ...
    }
}

ASCX 文件:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Productname.ascx.cs" Inherits="Company.Productgroup.Productname" %>

ASCX.designer.cs 文件:

namespace Company.Productgroup    {
    public partial class Productname : System.Web.UI.UserControl
    {
        ...
    }
}

我尝试过:

  • 将贡品CodeBehind更改为CodeFile,反之亦然
  • 从 ASCX 中删除命名空间.cs
  • 从中删除命名空间
  • ASCX.designer.cs 将 ASCX 文件中的"继承"属性更改为
  • 产品名称
  • /产品组.产品名称
  • 搜索谷歌/SO寻求解决方案。在几乎每个结果中,问题是继承属性和名称速度/类名,例如:链接 1、链接 2、链接 3

事实是什么:

  • 所有文件都存储在同一个目录中,因此没有路径问题应该发生。
  • VS 项目中的默认命名空间设置为 Company.Productgroup

您的designer文件似乎是问题所在。其中类名Product,而在其他两个文件中为Productname 。有点奇怪,它会不同步,因为生成了设计器文件,但我已经看到它发生了。尝试手动修复它,看看会发生什么。

更新

根据您的评论,我决定看看我们的一些ASCX,看看有什么不同。在我们的designer文件中,没有显示继承链。例如:

AutoHideField.ascx.cs

namespace Foo
{
    public partial class AutoHideField : System.Web.UI.UserControl

AutoHideField.ascx.designer.cs

namespace Foo
{
    public partial class AutoHideField

AutoHideField.ascx

<%@ Control ... Inherits="Foo.AutoHideField" %>

最新更新