名字'xxx'在当前上下文用户控件中不存在

本文关键字:用户 控件 不存在 上下文 xxx 名字 | 更新日期: 2023-09-27 18:02:58

开头有这样的语句:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="ucCreditCard.ascx.cs"
    Inherits="UserControls_Common_ucCreditCard" %>

在uccredit card . asx .cs我有这个:

using System;
using System.Text;
using System.Text.RegularExpressions;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
public partial class UserControls_User_ucCreditCard : System.Web.UI.UserControl
{
//
}

当我尝试引用任何简单的控件,如文本框等,我总是得到控件'xxx'不存在于当前内容。有什么问题吗?

提前感谢:)

名字'xxx'在当前上下文用户控件中不存在

希望您错过了设计器文件,因为这些错误大多只发生在这种情况下,右键单击和convert to web application.应该可以解决问题。

还要检查它是否与.cs文件中定义的部分类相同

您一定是更改了文件名,但没有更新类名:

你有:

public partial class UserControls_User_ucCreditCard : System.Web.UI.UserControl
{
//
}

应为

public partial class UserControls_Common_ucCreditCard : System.Web.UI.UserControl
{
//
}

同样的问题,但有一个用户控件。现在解决。

在我的例子中,问题是设计器文件在与主名称空间不同的名称空间中生成,而不仅仅是缺少文件。别问我怎么回事

  • 我的这个问题是由应用程序
  • 中的另一个错误引起的
  • 我尝试重建解决方案,只得到这个错误,没有其他
  • 所以我只是重建项目的问题
  • 出现另一个错误
  • 我修复了这个-原来它是阻止正确编译的用户控制
  • 现在工作正常!

当您得到这个错误时,还有另一种情况。当多个aspx页面引用相同的代码页时。这种情况通常发生在您复制了页面,然后更改了页面名称,但忘记更改inherits标签时。

要找出这只是搜索文本内的inherits标签,在整个项目中,如果有多个出现的文本在aspx页面,那么只需做相应的修改。

使用不同的表单和用户控件名将解决您的问题。

解决方案如下。你错过了申报项目

using System.Xml.Linq;
namespace YouProjectName
{
public partial class UserControls_Common_ucCreditCard : System.Web.UI.UserControl
{
//
}
} // end of namespace.

选择"Convert to web application",它将创建新的。aspx.designer.cs文件。然后Build会解决这个问题

为了说明V4Vendetta所说的内容,这里有一个关于下拉列表的示例。

UserControls_Common_ucCreditCard。ascx

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="ucCreditCard.ascx.cs"
    Inherits="UserControls_Common_ucCreditCard" %>
//Exemple with a Drop down list
<asp:DropDownList ID="drpMain" runat="server" Width="200px" Visible="true">

ucCreditCard.ascx.designer.cs

    //Namespace must be the same in ucCreditCard.ascx.designer.cs and in ucCreditCard.ascx.cs
namespace NameOfYourProject {
                        public partial class UserControls_User_ucCreditCard {
                            protected global::System.Web.UI.WebControls.DropDownList drpMain;
                    }
}

ucCreditCard.ascx.cs

using System;
using System.Text;
using System.Text.RegularExpressions;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

namespace NameOfYourProject
{
public partial class UserControls_User_ucCreditCard : System.Web.UI.UserControl
{
// You can refer drpMain
}

我刚刚遇到这个后,我复制/粘贴了一个ascx用户控件,我要做一个突破性的改变,它需要被"版本化"。我已经调整了类名,但是在后面的原始ascx代码中对页面控件的引用仍然令人恶心,直到我确保是完整的名称空间。classname在ascx页面"继承"属性中被使用。