名字'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'不存在于当前内容。有什么问题吗?
提前感谢:)
希望您错过了设计器文件,因为这些错误大多只发生在这种情况下,右键单击和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页面"继承"属性中被使用。