当前上下文用户控件中不存在名称“xxx”

时间:2011-07-19 10:40:28

标签: c# asp.net

我在开始时有这位政治家:

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

在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;

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

当我尝试引用任何像Textbox等简单控件时,我总是得到控件'xxx'在当前内容中不存在。可能是什么问题?

提前致谢:)

10 个答案:

答案 0 :(得分:8)

希望您缺少设计器文件,因为这些错误通常仅在这种情况下发生,右键单击并convert to web application.应该可以解决问题。

另外,请检查它与.cs文件中定义的分部类相同

答案 1 :(得分:1)

您必须更改了文件名,但未更新班级名称:

你有:

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

应该是

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

,如代码的.aspx部分所示。

答案 2 :(得分:1)

此处存在相同问题,但使用用户控件。现在解决了。

就我而言,问题是设计器文件是在与主要名称空间不同的名称空间中生成的,而不仅仅是丢失的文件。不要问我是怎么回事。

答案 3 :(得分:0)

当您收到此错误时,还有另一种情况。当多个aspx页面引用相同的代码页时。这通常发生在您创建页面副本然后更改页面名称但忘记更改继承标记时。

要找到这个,只需在整个项目中搜索inherits标记内的文本,如果aspx页面中出现多个文本,那么只需相应地进行修改。

答案 4 :(得分:0)

  • 此问题对我来说是由应用程序中的另一个错误引起的
  • 我尝试重建解决方案并且只获得此错误而没有其他人
  • 所以我只重建了带问题的项目
  • 出现了另一个错误
  • 我修复了这个问题 - 结果是阻止正确编译用户控件
  • 现在工作正常!

答案 5 :(得分:0)

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

答案 6 :(得分:0)

这里的解决方案。 你错过了申报项目。

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

答案 7 :(得分:0)

选择“转换为Web应用程序”,它将创建新的.aspx.designer.cs文件。然后Build将解决问题

答案 8 :(得分:0)

说明V4Vendetta所说的是一个带有dropDownList的例子。

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
}

答案 9 :(得分:0)

我在复制/粘贴了一个ascx用户控件之后遇到了这个问题,我将对其进行重大更改,并且需要进行版本化#34;。我已经调整了类名,但是对原始ascx代码后面的页面控件的引用仍然被禁止,直到我确保在ascx页面中使用了完整的namespace.classname &#34;继承&#34 ;属性。