【问题标题】:My control is "not allowed here because it does not extend class 'System.Web.UI.UserControl'"我的控件“这里不允许,因为它没有扩展类'System.Web.UI.UserControl'”
【发布时间】:2010-12-12 12:56:05
【问题描述】:

所以我有另一个面条刮刀(反正对我来说)。

我正在尝试在只有部分源代码的 CMS 中创建自己的自定义控件(即供应商提供给我的示例)。基本上我创建了一个名为DataDefinitionContent 的类,它扩展了ControlBase。现在,根据我可以从元数据中获得的信息,ControlBase 扩展了UserControl,所以我原以为这不会发生戏剧性的事情。谁能解释为什么这对我不起作用?


我的班级:

public partial class DataDefinitionContent : ControlBase, ICustomControl<DataDefinition>
{
... Stuff
}

控制基础:

using System;
using System.Web.UI;
namespace CMS.Web
{
    public class ControlBase : UserControl
    {
    ... Stuff
    }
}

我的 ascx 文件:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="DataDefinitionContent.ascx.cs"
    Inherits="CMS.Admin.WebUI.CustomControls.DataDefinitionContent, CoA.Admin.WebUI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" %>

我得到的错误:

解析器错误消息: 'CMS.Admin.WebUI.CustomControls.DataDefinitionContent, CoA.Admin.WebUI,版本=1.0.0.0, 文化=中立,PublicKeyToken=null' 这里不允许,因为它确实 不扩展类 'System.Web.UI.UserControl'。

第 1 行:

【问题讨论】:

  • 你的局部类在命名空间内吗?
  • 其实不是。你能给我一个线索,让我知道我将如何解密我应该把它放在哪个命名空间中吗? (OP还是个新手)
  • 你的继承中有 ="CMS.Admin.WebUI.CustomControls.DataDefinitionContent, CoA.Admin.WebUI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" 我没有t认为你需要。命名空间看起来像 CMS.Admin.WebUI.CustomControls,虽然 controlbase 看起来像它在 CMS.Web

标签: c# custom-controls user-controls extend


【解决方案1】:

当扩展 UserControl 类的类的名称不是 ASP 包含中使用的名称时,我收到此错误。我更改了类名并重新部署了解决方案。问题已解决。

【讨论】:

  • 重命名文件时,类的名称不会在每个站点上更新,这是我的情况。
【解决方案2】:

尝试将你的部分类放入

namespace CMS.Web 

【讨论】:

  • 你的建议奏效了,但我最终从不同的角度解决了这个问题。感谢您的帮助。
  • 帅哥。你采取了什么方法?如果您将网站转换为 Web 应用程序,整个命名空间问题可能会成为一场彻头彻尾的噩梦。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多